gpt4 book ai didi

asp.net-core - 为 ASP.NET Core 构建 Web 部署包时如何指定自定义parameters.xml?

转载 作者:行者123 更新时间:2023-12-02 03:51:45 26 4
gpt4 key购买 nike

概述

我正在构建一个可部署的 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 Core Web 应用程序 ASP.NET Core Web Application在 ASP.NET Core 1.1 上使用 .NET Framework .NET Framework with ASP.NET Core 1.1然后我就去发布我的网站

Publish dropdown

选择“文件夹”(只是为了获取模板) Folder Publish

然后,我编辑了配置文件,将 WebPublishMethod 更改为 Package,并在其下面添加了三行。

<DesktopBuildPackageLocation>bin\$(Configuration)\$(MSBuildProjectName).zip</DesktopBuildPackageLocation>
<PackageAsSingleFile>true</PackageAsSingleFile>
<DeployIisAppPath>External</DeployIisAppPath>

Modified publish profile

然后我又发表了一次。现在我得到了一个可以部署到 IIS 的 WebDeploy 包。

太棒了!但是...

我想自定义parameters.xml。

Parameters.xml I'd like to customize

对于以前的项目,我能够将 parameters.xml 文件添加到我的项目根目录,VS/msbuild 会自动将其添加到我发布的包中。目前,这适用于使用 ASP.NET MVC 4 的不同项目。

所以,我在这个项目中尝试了同样的事情。首先我添加了一个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="(?&lt;=\&quot;SettingName\&quot;\s*:\s*\&quot;)[^\&quot;]*" />
</parameter>
</parameters>

再次,我右键单击并再次发布。这次使用parameters.xml 文件。

Project structure with Publish menu shown

我希望 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"

最佳答案

我能够通过 peteawood 对 GitHub 上发布的问题的评论解决这个问题。

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>
.csproj 文件的角度来看,

SourceFiles 应指向 parameters.xml 文件的位置。我的 parameters.xml 与我的项目文件位于同一目录中。

关于asp.net-core - 为 ASP.NET Core 构建 Web 部署包时如何指定自定义parameters.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46777717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com