Jos*_*ltz 8 msbuild webdeploy asp.net-core
我正在构建一个可部署的Web包,可以导入到IIS中,自动提示我的ASP.NET Core应用程序所需的设置.我已经创建了一个可以正常部署的软件包,除了在部署之后,我需要手动查找/编辑我的appsettings.json文件.
我知道这个软件包可以包含一个parameters.xml文件,该文件会在将应用程序导入IIS时自动提示并填写我的appsettings.json.我已经创建了一个parameters.xml文件,并在构建之后手动将其添加到我的包中; 它按预期工作.我想让msbuild为我自动将parameters.xml文件添加到包中.
我的一个单独的项目(ASP.NET MVC 4)已经做到了这一点.为此,我只需要将我parameters.xml放在与.csproj相同的文件夹中.我试着在这里做同样的事,但没有运气.
我创建了一个ASP.NET核心Web应用程序
在ASP.NET Core 1.1上使用.NET Framework
然后我去发布我的网站
然后我编辑了配置文件并将其更改WebPublishMethod为Package并在其下方添加了三行.
<DesktopBuildPackageLocation>bin\$(Configuration)\$(MSBuildProjectName).zip</DesktopBuildPackageLocation>
<PackageAsSingleFile>true</PackageAsSingleFile>
<DeployIisAppPath>External</DeployIisAppPath>
Run Code Online (Sandbox Code Playgroud)
然后我又发表了一次.现在我得到一个可以部署到IIS的WebDeploy包.
大!但...
我想自定义parameters.xml.
对于以前的项目,我能够将parameters.xml文件添加到项目根目录,VS/msbuild会自动将其添加到我发布的包中.这当前适用于使用ASP.NET MVC 4的不同项目.
所以,我为这个项目尝试了同样的事情.首先,我添加了一个settings.json,设置非常简单:
{
"SettingName": ""
}
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个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>
Run Code Online (Sandbox Code Playgroud)
再次,我再次点击右键Publish.这次使用parameters.xml文件.
我希望Sample.zip包含我添加到项目根目录的parameters.xml,但事实并非如此.它与我原来的发布完全相同.
在创建Web部署包的构建过程中,如何在parameters.xml中包含自定义设置?
我已经看过/sf/answers/3243662971/,但没有运气,虽然我的命令与原始海报略有不同.
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"
Run Code Online (Sandbox Code Playgroud)
我能够通过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>
Run Code Online (Sandbox Code Playgroud)
SourceFiles应该parameters.xml从文件的角度指向文件的位置.csproj.我parameters.xml和我的项目文件位于同一目录中.
| 归档时间: |
|
| 查看次数: |
5666 次 |
| 最近记录: |