我已经构建了简单的WebAPI项目,而不是我尝试使用Visual Studio 2013内置的发布机制(BUILD> Publish)发布它 我选择Web Deploy作为发布方法,除了转换文件外,一切正常。
我有Web.config和Settings.config,每个都有两个转换。 当我在bin文件夹中的项目上进行标准构建时,我看到单个Web.config和Settings.config并应用了转换,但是当我发布而不是转换的Settings.config文件时,我看到没有应用转换的文件。
我认为Visual Studio中的发布机制只是转换Web.config并且它会跳过其他文件。
以下是负责应用转换的csproj的一部分:
<Target Name="AfterBuild">
<TransformXml Condition="Exists('Settings.$(Configuration).config')" Source="Settings.config" Destination="$(OutputPath)Settings.config" Transform="Settings.$(Configuration).config" />
<TransformXml Condition="Exists('Web.$(Configuration).config')" Source="Web.config" Destination="$(OutputPath)Web.config" Transform="Web.$(Configuration).config" />
</Target>
我的问题是如何设置我的发布配置文件,而不是复制干净的Settings.config,它将应用正确的转换并发布它。
编辑:
我设法找到一件可能有助于解决这个问题的事情。如果我将UseMsdeployExe
添加到pubxml,我可以在输出中看到我的Settings.config已转换并保存到bin
文件夹,但稍后会被原始文件覆盖。
我的AfterBuild目标被正确调用,但在它之后我可以在输出中看到这些行:
2 - ;将所有文件复制到下面的临时位置以进行包/发布: 2 - ; OBJ \调试\包\ PackageTmp。 2 - ;将bin \ Api.dll复制到obj \ Debug \ Package \ PackageTmp \ bin \ Api.dll。 2 - ;将Settings.config复制到obj \ Debug \ Package \ PackageTmp \ Settings.config。