IISにインポートできるデプロイ可能なWebパッケージを構築しています。これにより、ASP.NET Coreアプリケーションに必要な設定の入力が自動的に求められます。デプロイ後を除いて、正常にデプロイされるパッケージを既に作成しました。 、appsettings.jsonファイルを手動で検索/編集する必要があります。
このパッケージには、アプリをIISにインポートするときにappsettings.jsonに自動的にプロンプトを表示して入力するparameters.xml
ファイルを含めることができることを知っています。すでにparameters.xmlファイルを作成し、ビルド後に手動でパッケージに追加しました。期待どおりに機能しました。 msbuildにparameters.xmlファイルをパッケージに自動的に追加してもらいたいのですが。
私の別のプロジェクト(ASP.NET MVC 4)はすでにこれを行っています。そのためには、parameters.xml
を.csprojと同じフォルダーに配置するだけで済みました。ここでも同じことをしてみましたが、うまくいきませんでした。
ASP.NET Core Webアプリケーションを作成しました ASP.NET Core1.1での.NETFrameworkの使用 それから私は自分のウェブサイトを公開しに行きました
次に、プロファイルを編集してWebPublishMethod
をPackage
に変更し、その下に3行を追加しました。
<DesktopBuildPackageLocation>bin\$(Configuration)\$(MSBuildProjectName).Zip</DesktopBuildPackageLocation>
<PackageAsSingleFile>true</PackageAsSingleFile>
<DeployIisAppPath>External</DeployIisAppPath>
その後、もう一度公開しました。これで、IISに展開できるWebDeployパッケージを入手できます。
すごい!だが...
Parameters.xmlをカスタマイズしたいのですが。
以前のプロジェクトでは、parameters.xml
ファイルをプロジェクトルートに追加することができ、VS/msbuildはそれを公開パッケージに自動的に追加しました。これは現在、ASP.NET MVC4を使用する別のプロジェクトで機能します。
それで、私はこのプロジェクトで同じことを試みました。まず、非常に単純な設定でsettings.jsonを追加しました。
{
"SettingName": ""
}
次に、動作することがわかっているparameters.xml
ファイルをプロジェクトルートに追加しました。 (Sample.Zipパッケージのparameters.xmlファイルを手動で置き換えると、デプロイ時に設定が正しく表示され、置き換えられます)
<parameters>
<parameter name="IIS Web Application Name" value="External" tags="IisApp">
<parameterEntry kind="ProviderPath" scope="IisApp" match="^c:\\users\\joshs\\documents\\visual\ studio\ 2017\\Projects\\Sample\\Sample\\obj\\Release\\net461\\win7-x86\\PubTmp\\Out\\$" />
</parameter>
<parameter name="Setting Name" description="Enter a custom app setting" defaultValue="Default Setting Value">
<parameterEntry kind="TextFile" scope="obj\\Debug\\net461\\win7-x86\\PubTmp\\Out\\appsettings\.json$" match="(?<=\"SettingName\"\s*:\s*\")[^\"]*" />
</parameter>
</parameters>
もう一度、右クリックしてPublish
をもう一度押します。今回はparameters.xmlファイルを使用します。
Sample.Zipには、プロジェクトルートに追加したparameters.xmlが含まれていると思いますが、含まれていません。それは私の最初の出版物とまったく同じです。
Webデプロイパッケージを作成する際のビルドプロセス中に、parameters.xmlにカスタム設定をどのように含めますか?
私はすでに https://stackoverflow.com/a/46338042/2494785 を見ましたが、私のコマンドは元のポスターとは少し異なっていましたが、運がありませんでした。
PS C:\Users\joshs\Documents\Visual Studio 2017\Projects\Sample> & 'C:\Program Files (x86)\Microsoft Visual Studio\2017\E
nterprise\MSBuild\15.0\Bin\MSBuild.exe' .\Sample.sln /t:Sample /p:DeployOnBuild=true /p:PublishProfile=FolderProfile /p:
ProjectParametersXMLFile="C:\Temp\parameters.xml"
GitHubに投稿された問題からのpeteawoodのコメントからこれを解決することができました。
https://github.com/aspnet/websdk/issues/201#issuecomment-349990389
ASP.NET Core 2.0以降では、.csprojに以下を追加できます。
<Project Sdk="Microsoft.NET.Sdk.Web">
.
.
<Target Name="AddMoreParameters" AfterTargets="_CreateParameterFiles">
<Copy SourceFiles="Parameters.xml" DestinationFiles="$(_MSDeployParametersFilePath)" />
</Target>
</Project>
SourceFiles
は、parameters.xml
ファイルの観点から.csproj
ファイルの場所を指している必要があります。私のparameters.xml
は、私のプロジェクトファイルと同じディレクトリにあります。
Msbuildのプロパティとしてcmd-lineを介してパラメータを渡すことができると思います。それはあなたが私が理解していることを完全に求めたものではありません。
たとえば、次のコマンドでは、DeployIisAppPath
プロパティを渡します。
dotnet publish /p:WebPublishMethod=Package /p:DeployIisAppPath=mysite/myapp /p:PublishProfile=rnddev03-core-dev
出力フォルダーに、次のxxx.SetParameters.xmlファイルを取得します。
<parameters>
<setParameter name="IIS Web Application Name" value="mysite/myapp" />
</parameters>