首页 文章

SlowCheetah:如何将转换后的文件从第二个项目中引用的类库中包含到该项目输出中?

提问于
浏览
0

使用SlowCheetah我在我的类库中有一个custom.config文件,我希望这个文件被转换并包含在我的控制台应用程序的输出中,它引用它 .

Slow Cheetah将custom.config转换为自己的bin文件夹,我可以使用copy-always / newer包含custom.config,但是它是复制的未转换配置 . 如何通过slowcheetah将转换后的配置文件复制到我的输出项目中?

请注意我是 not 尝试转换并将我的 app.config 包含为classLibrary.dll.config . 我已经可以做到了 . 我正在寻找的是转换后包含其他custom.config文件的选项 .

1 回答

  • 0

    我将在这里发布我自己的解决方案,我最终放弃了SlowCheetah并直接在构建文件(.csproj)中的自定义转换步骤中执行此操作 .

    <Target Name="AfterBuild">
      <ItemGroup>
        <!-- Files to transform -->
        <ConfigurationFile Include="$(OutputPath)\Config\*.config" Exclude="$(OutputPath)\Config\*.*.config" />
        <!-- Files to use to transform -->
        <TransformationFile Include="$(OutputPath)\Config\*.*.config" />
      </ItemGroup>
      <!-- Message for debugging -->
      <Message Text="Transforming %(ConfigurationFile.Identity)  ==&gt;  @(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')" Importance="normal" Condition="Exists('@(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')')"
      />
    
      <!-- This is the actual transform step -->
      <TransformXml Source="%(ConfigurationFile.Identity)" Transform="@(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')" Destination="@(ConfigurationFile->'$(OutputPath)\Config\%(Filename)%(Extension)')" StackTrace="True"
      Condition="Exists('@(ConfigurationFile->'$(OutputPath)\Config\%(Filename).$(Configuration)%(Extension)')')" />
    
    
    
      <!-- ===Uncomment this to clean up transform files from target directory=== -->
      <!--<Message Text="Deleting:  %(TransformationFile.Identity)" />
    	 <Delete Files="@(TransformationFile)" /> -->
    </Target>
    

    我的所有配置文件都存在于名为“Config”的目录中的引用项目中,并被称为“somethingSpecific.config”,所有转换文件都被称为“somethingSpecific.someEnvironment.config” .

    此构建目标将搜索config文件夹中的所有文件,并尝试查找与构建配置对应的转换文件 . 对于任何匹配,它会发现它将执行转换 . 只需确保所有配置文件和所有转换文件都找到输出路径中正确文件夹的路径 .

相关问题