我有一个项目,我正在尝试使用SlowCheetah。我已经创建了我的配置文件(Test.web.config)和我想使用的所有转换(Debug_Mock.config, Debug_SQL.config, Release)在我的构建配置中,我有一个构建后事件,应该将转换后的文件复制到另一个目录中,但找不到该文件
(错误 xcopy 退出,代码为 4)
SlowCheetah 似乎并没有像我期望的那样转换文件并将其放置在输出目录(bin 文件夹)中。有没有人知道为什么它没有发生,也许是某个地方的设置?
仅供参考:此过程在具有相同项目的另一台计算机上工作。据我所知,同样的设置也是如此。但我可能没有找对地方。
,我发现问题是配置文件中的慢猎豹属性组位于它检查是否存在的部分下方。
因此,修复只是将属性组移动到该行上方的某个位置,以允许转换按预期运行。
把这个:
<PropertyGroup Label="SlowCheetah">
<SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)..packagesSlowCheetah.2.5.10.3tools))</SlowCheetahToolsPath>
<SlowCheetah_EnableImportFromNuGet Condition=" '$(SC_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
<SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)PropertiesSlowCheetahSlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
<SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>
在此之上:
<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
检查您的项目,是否存在一个名为 SlowCheetah 的文件夹,其中包含文件 SlowCheetah.Transforms.targets。如果缺少此文件,请尝试以下步骤:
- 右键单击解决方案
- "管理解决方案的 NuGet 包...",浏览慢猎豹
- 点击"管理"
- 取消选择您的项目,然后单击"确定"
- 再次点击"管理"
- 选择您的项目,然后再次单击"确定"
这将重新创建丢失的文件。
-
启用构建详细程度 (
Tools -> Options -> Projects and Solutions -> Build and Run
),并查看正常工作版本与无效版本之间的差异。 -
据我所知,慢猎豹支持
app.config
文件的配置转换,但目前未web.configs
调试。它应将转换后的web.config
文件放在项目的bin
文件夹中,但项目仍会从根文件夹中的config file
读取。请查看构建前/构建后事件http://sedodream.com/CommentView,guid,68b7e248-b9f5-4d07-bdfe-eb037bcf2cbb.aspx。 -
您可以在调试
时请求 Web 配置转换支持https://github.com/sayedihashimi/slow-cheetah/issues/39 -
尝试重新安装慢猎豹。
请注意,您必须为相关项目安装 SlowCheetah Visual Studio 扩展和 SlowCheetah nuget 包才能进行转换。
如上所述重新安装后,我需要将subType
和transformOnBuild
节点添加到我的csproj文件中,它开始为我工作。
<None Include="App.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</None>
<None Include="App.QA.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>True</IsTransformFile>
</None>
<</div>
div class="one_answers"> 使用 SlowCheetah 2.5.15 和 Visual Studio 2015,我必须卸载 nuget 包,然后手动从相关的 .csproj 文件中删除以下内容:
<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
和
<PropertyGroup Label="SlowCheetah">
<SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)..packagesSlowCheetah.2.5.15tools))</SlowCheetahToolsPath>
<SlowCheetah_EnableImportFromNuGet Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
<SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)PropertiesSlowCheetahSlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
<SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>
完成此操作并重新安装 SlowCheetah nuget 包后,我的问题就解决了。
> SlowCheetah 3.2.20 添加了一个"功能",旨在尊重 Visual Studio 中的"请勿复制"文件设置。因此,如果您没有将.config文件设置为"始终复制"或"如果较新则复制",则不会将它们复制到输出文件夹。
有关一些详细信息,请参阅 https://github.com/Microsoft/slow-cheetah/issues/182。
这是我的问题 - 花了三个小时调试它...
,App.config 转换正在工作。只是输出不是应用程序配置。它实际上是appname.exe.config。实际上,我关闭了将app.config复制到应用程序构建输出文件夹的功能,以免混淆其他人。appname.exe可执行文件从appname.exe.config获取配置。