我正在使用 Microsoft.VisualStudio.SLowCheetah (v3.0.61) 包在构建期间将多个配置文件转换为发布版本。
最近我已将解决方案中的所有项目从 packages.config 迁移到包引用格式。之后,SlowCheetah 执行的转换在构建服务器上中断。如果从 Visual Studio 2017 (v 15.6.7) 本地发布到文件系统,一切正常。之前SlowCheetah 的所有目标都是在末尾直接导入的
*.csproj
文件。在包引用方法中,已使用包中的所有目标都合并到
obj/PROJECTNAME.csproj.nuget.g.targets
文件。此问题仅影响 Web 项目。(带有集成测试的项目中 App.config 文件的转换工作正常。)
我在构建服务器上使用下一个命令来恢复包:
nuget.exe restore "C:\PATH\Web.Site.sln" -Verbosity Normal -NonInteractive -ConfigFile C:\PATH\NuGet.Config
下一个用于构建解决方案:
msbuild.exe "C:\PATH\WizNG.App.Site.sln" /nologo /nr:false /p:DeployOnBuild=true /p:PublishProfile="FileSystem.pubxml" /p:platform="any cpu" /p:configuration="release" /p:VisualStudioVersion="15.0" /m /verbosity:normal
带有配置文件的 csproj 文件片段:
<Content Include="NLog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</Content>
<None Include="NLog.Debug.config">
<DependentUpon>NLog.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="NLog.Local.config">
<DependentUpon>NLog.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="NLog.Release.config">
<DependentUpon>NLog.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<Content Include="Myconfig1.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</Content>
<None Include="Myconfig1.Local.config">
<DependentUpon>Myconfig1.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="Myconfig1.Release.config">
<DependentUpon>Myconfig1.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<None Include="Myconfig1.Debug.config">
<DependentUpon>Myconfig1.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
我正在使用 MSBuild v 15.0
更新 1
*.csproj 文件包含下一个导入:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
经过一番调查,我注意到如果从
Microsoft.CSharp.targets
Microsoft.WebApplication.targets
至
Microsoft.WebApplication.targets
Microsoft.CSharp.targets
转型开始发挥作用。
这种变化是否有其他影响?