Xml SlowCheetah未在生成时转换文件

Xml SlowCheetah未在生成时转换文件,xml,web.config-transform,slowcheetah,xdt-transform,config-transformation,Xml,Web.config Transform,Slowcheetah,Xdt Transform,Config Transformation,我有一个项目,我正试图使用SlowCheetah。 我已经创建了我的配置文件(Test.web.config)和我想要使用的所有转换 (Debug_Mock.config、Debug_SQL.config、Release) 在我的生成配置中,我有一个生成后事件,它应该将转换后的文件复制到另一个目录中,但找不到该文件 (错误xcopy退出,代码为4) SlowCheetah似乎没有像我预期的那样转换文件并将其放入输出目录(bin文件夹)。 有没有人知道为什么它不会发生,也许是某个地方的背景 仅供参

我有一个项目,我正试图使用SlowCheetah。 我已经创建了我的配置文件(Test.web.config)和我想要使用的所有转换 (Debug_Mock.config、Debug_SQL.config、Release) 在我的生成配置中,我有一个生成后事件,它应该将转换后的文件复制到另一个目录中,但找不到该文件

(错误xcopy退出,代码为4)

SlowCheetah似乎没有像我预期的那样转换文件并将其放入输出目录(bin文件夹)。 有没有人知道为什么它不会发生,也许是某个地方的背景

仅供参考:此过程在另一台机器上工作,具有相同的项目。据我所知,同样的设置也是如此。但我可能找不到正确的位置。

  • 启用生成详细信息(
    Tools->Options->Projects and Solutions
    ->构建并运行
    ),查看正在运行的版本与未运行的版本之间的差异

  • 据我所知,slow Cheetah支持
    app.config
    文件的配置转换,但是 目前未在调试时配置
    web.configs
    。它应该将转换后的
    web.config
    文件放在项目的
    bin
    文件夹中,但项目仍然从根文件夹中的
    config文件中读取。请在上查看构建前/构建后事件
    

  • 您可以在调试时请求web配置转换支持,网址为

  • 尝试重新安装慢速猎豹


对于我来说,我发现问题在于配置文件中的slow cheetah属性组位于其检查是否存在的部分下方

因此,解决方法只是将属性组移动到该行上方的某个位置,从而允许转换按预期运行

这样说:

<PropertyGroup Label="SlowCheetah">
  <SlowCheetahToolsPath>$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.10.3\tools\))</SlowCheetahToolsPath>
  <SlowCheetah_EnableImportFromNuGet Condition=" '$(SC_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
  <SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
  <SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
</PropertyGroup>

$([System.IO.Path]::GetFullPath($(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.10.3\tools\)
真的
$([System.IO.Path]::GetFullPath($(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets))
$(缓慢的输入路径)
除此之外:

<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />

如果存在一个名为SlowCheetah的文件夹,其中包含文件SlowCheetah.Transforms.targets,请检入项目。 如果缺少此文件,请尝试以下步骤:

  • 右键单击解决方案
  • “管理解决方案的NuGet软件包…”,浏览SlowCheetah
  • 点击“管理”
  • 取消选择项目并单击“确定”
  • 再次点击“管理”
  • 选择您的项目并再次单击“确定”

  • 这将重新创建丢失的文件。

    使用SlowCheetah 2.5.15和Visual Studio 2015,我必须卸载nuget软件包,然后手动从相关的.csproj文件中删除以下内容:

    <Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />
    
    
    

    
    $([System.IO.Path]::GetFullPath($(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.15\tools\)
    真的
    $([System.IO.Path]::GetFullPath($(MSBuildProjectDirectory)\Properties\SlowCheetah\SlowCheetah.Transforms.targets))
    $(缓慢的输入路径)
    

    完成此操作并重新安装SlowCheetah nuget软件包后,我的问题就解决了。

    在如上所述重新安装后,我需要将
    子类型
    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>
    
    
    设计师
    真的
    App.config
    真的
    
    请注意,您必须为相关项目安装SlowCheetah Visual studio扩展SlowCheetah nuget软件包,才能使转换生效

    SlowCheetah 3.2.20添加了一个“功能”,旨在尊重Visual Studio中的“请勿复制”文件设置。因此,如果没有将.config文件设置为“始终复制”或“更新时复制”,则不会将其复制到输出文件夹

    有关详细信息,请参阅


    这是我的问题-花了三个小时调试它…

    这标记为已回答,但哪一步解决了问题?@TravisParks对我来说,我安装了SlowCheetah,让我从中执行添加转换和预览转换,但不会更改输出配置。然后我从nuget安装了SlowCheetah,它成功了。@ChrisCameron刚刚从网站上在VS2013 Up5上安装了SlowCheetah。预览可以工作,但在构建时不会被转换。从Nuget安装修复了这一问题。谢谢谢谢浪费了很多时间。最后,卸载扩展并从nuget安装修复了它!看看下面的csproj/vsproj答案,这个答案并没有解决我的问题,但是添加propertygroup为我解决了这个问题;我正在通过NuGet使用SlowCheetah 2.5.10.3,我的App.config文件没有被转换。我交换了上面两个元素的顺序,它开始工作。如上所述,在本地修复了此问题后,Jenkins build服务器上的构建开始失败,其他人在此处已经指出:。修复方法是将SlowCheetah.transforms.targets中的SlowCheetah版本调整为正确的2.5.10.3版本。这为我修复了它。我正在使用SlowCheetah 2.5.14这为我修复了它。PropertyGroup和导入均未添加到项目的vbproj文件中。此外,我还更新了slowcheethatoolspath中的版本号element@Toolkit您添加到SlowCheetah的csproj/project文件是为我准备的。我安装了没有创建文件夹的文件夹。所以我得到了添加/预览,但转换实际上不会发生在“卸载/重新安装”解决方案中。每次都有效!SlowCheetah文件夹是在Properties文件夹下创建的。这对我很有用,事实证明我们只需安装vs插件,忘记安装nuget软件包。感谢Thorstennon,以下解决方案对我有效:(你最终成功了吗?下面的解决方案对我都不起作用。对我来说,更改甚至没有出现在预览中。扩展和包之间的重要区别。我需要两者来进行转换。
    <None Include="App.config">
      <SubType>Designer</SubType>
      <TransformOnBuild>true</TransformOnBuild>
    </None> 
    <None Include="App.QA.config">
      <DependentUpon>App.config</DependentUpon>
      <IsTransformFile>True</IsTransformFile>
    </None>