MSBuild目标在与构建无关的时间运行

时间:2018-07-15 20:32:38

标签: .net xml msbuild target

我有一个正在编写的NuGet软件包,用于自动更新项目版权中的年份。它可以工作,但是问题是,目标似乎在​​不应该运行时运行。例如:添加NuGet程序包后,它将立即运行,从而导致Visual Studio抱怨我刚刚将其导入的项目文件已被修改。

我注意到,如果我在构建之前更改版权年份,则目标将以某种方式在构建之前运行 ,并且在目标运行时已经对年份进行了更正。在构建过程中。

当用户请求构建时,如何告诉MSBuild目标仅运行

编辑:目前,我正在使用.NET Core项目对此进行测试,但是它也应该能够与Framework和Standard一起使用。

文件: build \ TriggersTools.AssemblyCopyrightYear.targets

<!-- Modify the assembly's copyright year -->
<Project>
  <PropertyGroup>
    <TaskFolder Condition=" '$(MSBuildRuntimeType)' == 'Core' ">netstandard1.3</TaskFolder>
    <TaskFolder Condition=" '$(MSBuildRuntimeType)' != 'Core' ">net46</TaskFolder>
    <TaskAssembly>$(MSBuildThisFileDirectory)..\tasks\$(TaskFolder)\TriggersTools.AssemblyCopyrightYear.dll</TaskAssembly>
  </PropertyGroup>

  <UsingTask TaskName="TriggersTools.AssemblyCopyrightYear.CopyrightYear" AssemblyFile="$(TaskAssembly)"/>
  <Target Name="TriggersToolsAssemblyCopyrightYearAssign" BeforeTargets="PrepareForBuild">
    <!-- Run the CopyrightYear task -->
    <CopyrightYear ProjectPath="$(MSBuildProjectFullPath)" />
  </Target>
</Project>

文件: buildMultiTargets \ TriggersTools.AssemblyCopyrightYear.targets

<!-- Modify the assembly's copyright year -->
<Project>
  <!-- Import the build .targets file since this one is no different -->
  <Import Project="$(MSBuildThisFileDirectory)..\build\TriggersTools.AssemblyCopyrightYear.targets"/>
</Project>

0 个答案:

没有答案