【问题标题】:SlowCheetah not transforming file on buildSlowCheetah 没有在构建时转换文件
【发布时间】:2012-11-10 03:33:52
【问题描述】:

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

(错误 xcopy 以代码 4 退出)

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

仅供参考:此过程适用于具有相同项目的另一台机器。据我所知,同样的设置也是如此。但我可能没有找对地方。

【问题讨论】:

  • 以下解决方案都不适合我 :( 你最终让它工作了吗?
  • 以下解决方案都不适合我。即使在我的预览中,这些更改也没有出现。

标签: xml web.config-transform slowcheetah xdt-transform config-transformation


【解决方案1】:

对我来说,我发现问题是配置文件中的慢 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>

以上:

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

【讨论】:

  • 这为我修好了;我通过 NuGet 使用 SlowCheetah 2.5.10.3,我的 App.config 文件没有被转换。我交换了上面两个元素的顺序,它开始工作了。
  • 如上所述在本地修复此问题后,我们的 Jenkins 构建服务器上的构建开始失败,正如其他人在此处指出的那样:github.com/sayedihashimi/slow-cheetah/issues/114。修复方法是将 SlowCheetah.transforms.targets 中的 SlowCheetah 版本调整为正确的 2.5.10.3 版本。
  • 这为我解决了问题。我正在使用 SlowCheetah 2.5.14
  • 这为我解决了问题。 PropertyGroup 和 Import 都没有添加到我的项目的 vbproj 文件中。此外,我确实更新了 SlowCheetahToolsPath 元素中的版本号
  • @Toolkit 你添加了 SlowCheetah 的 csproj/project 文件
【解决方案2】:

检查您的项目,如果存在名为 SlowCheetah 的文件夹,其中包含文件 SlowCheetah.Transforms.targets。 如果此文件丢失,请尝试以下步骤:

  1. 右击解决方案
  2. “为解决方案管理 NuGet 包...”,浏览 SlowCheetah
  3. 点击“管理”
  4. 取消选择您的项目并点击“确定”
  5. 再次点击“管理”
  6. 选择您的项目并再次单击“确定”

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

【讨论】:

  • 这是给我的。我从没有创建文件夹的visualstudiogallery.msdn.microsoft.com/… 安装。所以我得到了添加/预览,但转换实际上不会发生
  • 旧版卸载/重新安装解决方案。每次都有效!
  • SlowCheetah 文件夹在 Properties 文件夹下创建。
  • 这对我有用,事实证明我们只是安装 vs 插件,忘记安装 nuget 包。谢谢 Thorsten
【解决方案3】:

【讨论】:

  • 这被标记为已回答,但哪个步骤解决了问题?
  • @TravisParks 对我来说,我从visualstudiogallery.msdn.microsoft.com/… 安装了 SlowCheetah,它让我可以进行添加变换和预览变换,但不会更改输出配置。然后我从 nuget 安装了 SlowCheetah,它成功了。
  • @ChrisCameron 刚刚从网站上在 VS2013 Up5 上安装了 SlowCheetah。预览有效,但在构建时不会转换。从 Nuget 安装可以解决这个问题。谢谢!
  • 谢谢。浪费了好几个小时。最后,卸载扩展并从 nuget 安装修复它!
  • 看看下面的 csproj/vsproj 答案,这个答案没有解决我的问题,但是添加属性组确实
【解决方案4】:

请注意,您必须为相关项目安装 SlowCheetah Visual Studio 扩展SlowCheetah nuget 包,才能进行转换。

【讨论】:

  • 扩展和包之间的重要区别。我需要两者来进行转型。
【解决方案5】:

如上所述重新安装后,我需要将 subTypetransformOnBuild 节点添加到我的 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>

【讨论】:

    【解决方案6】:

    使用 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)\..\packages\SlowCheetah.2.5.15\tools\))</SlowCheetahToolsPath>
      <SlowCheetah_EnableImportFromNuGet Condition=" '$(SlowCheetah_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>
    

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

    【讨论】:

      【解决方案7】:

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

      有关详细信息,请参阅https://github.com/Microsoft/slow-cheetah/issues/182

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

      【讨论】:

        猜你喜欢
        • 2013-09-03
        • 2014-10-12
        • 2013-11-16
        • 1970-01-01
        • 2017-07-27
        • 2019-12-09
        • 2016-04-03
        • 2015-02-07
        • 2015-12-28
        相关资源
        最近更新 更多