导入.target文件无法动态加载到我的项目

时间:2017-12-22 05:36:59

标签: visual-studio msbuild

我有一个.target文件,导入我的项目:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="CreateInstaller">    
  <Import Project="$(PathToTargetFile)\My.target" />
<Project>

.target是由另一个目标构建的:

  <Target Name="MyCustomTarget" DependsOnTargets="$(OtherTargets)">
    <MSBuild Projects="$(PathToTargetFile)\My.target" />
  </Target>

每次调用MyCustomTarget的内容时,都会调用目标My.target。但My.target似乎不再是进口了,而不是第一次。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

如何解决此问题?

Visual Studio缓存所有导入的.target文件。这就是为什么你My.target似乎不再导入而不是第一次了。

要解决此问题,您可以使用具有不同名称的临时.target文件,这将强制VS重新加载.target文件:

  <Target Name="AfterBuild">
    <PropertyGroup>
      <TempProjectFile>My.$([System.Guid]::NewGuid()).target</TempProjectFile>
    </PropertyGroup>
    <Copy SourceFiles="My.target" DestinationFiles="$(TempProjectFile)" />
    <MSBuild Projects="$(TempProjectFile)" />
    <Delete Files="@(TempProjectFile)" />
  </Target>

您可以参考the similar issue了解详细信息。

希望这对你有所帮助。