【问题标题】:Using WriteCodeFragment MSBuild Task使用 WriteCodeFragment MSBuild 任务
【发布时间】:2010-11-29 02:07:06
【问题描述】:

我正在尝试使用WriteCodeFragment MSBuild 任务来创建AssemblyVersion 属性。我在创建属性组以正确传递处理所需的 ITaskItem 数组时遇到问题。有人可以举个例子吗?

【问题讨论】:

    标签: visual-studio msbuild msbuild-task msbuild-4.0 msbuild-propertygroup


    【解决方案1】:

    这将创建一个名为BuildVersion.cs 的文件,其AssemblyVersion 属性为123.123.123.123。如果OutputFile 被删除,那么将使用随机生成的文件名。 Compile 项目名称自动将该项目添加到编译项目(在构建中包括 BuildVersion.cs)。 FileWrites 项目名称允许在清理期间删除文件。

    <Target Name="BeforeBuild">
      <ItemGroup>
         <AssemblyAttributes Include="AssemblyVersion">
           <_Parameter1>123.123.123.123</_Parameter1>
         </AssemblyAttributes>
      </ItemGroup>
      <WriteCodeFragment AssemblyAttributes="@(AssemblyAttributes)"
                         Language="C#"
                         OutputDirectory="$(IntermediateOutputPath)"
                         OutputFile="BuildVersion.cs">
        <Output TaskParameter="OutputFile" ItemName="Compile" />
        <Output TaskParameter="OutputFile" ItemName="FileWrites" />
      </WriteCodeFragment>
    </Target>
    

    【讨论】:

    • 谢谢,这对我有帮助。值得注意的是,您还需要将 BuildVersion.cs 添加到 Compile 项。 &lt;ItemGroup&gt;&lt;Compile Include="BuildVersion.cs" /&gt;&lt;/ItemGroup&gt;
    • 我已更新代码以自动将输出添加到编译项。
    • 在 C# 项目中,将 Output TaskParameter="OutputFile" ItemName="FileWrites" /&gt; 添加到 WriteCodeFragment 元素的内容中,可以在 Clean 上删除文件。
    • 不指定OutputFile="BuildVersion.cs",任务每次调用都会生成一个新的唯一文件名。
    • 在 .net core 3.1 中我怎么能做到这一点?
    猜你喜欢
    • 2016-09-08
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多