我有一个正在编写的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>