在Visual Studio 2010中避免MSBuild社区任务的本地依赖性

Nan*_*ada 6 msbuild msbuildcommunitytasks visual-studio-2010

我正试图MSBuild Community Tasks在安装.msiMSBuild.Community.targets<Project>这种方式在元素中导入的包后立即开始利用这一点:

<Import Project="lib\MSBuild.Community.Tasks.targets" />
Run Code Online (Sandbox Code Playgroud)

有趣的是我注意到这样的文件引用了本地安装路径MSBuildExtensionsPath并且考虑到代替保持代码依赖性尽可能干净我愿意支付每个项目分发/版本化的开销,我想知道是否是否可以使用.cproj文件中与项目相关的位置覆盖默认/安装位置?

实际布局如下:

Dotnet.Samples.Foobar
\src
     Foobar.cs
\lib
     MSBuild.Community.Tasks.targets
     MSBuild.Community.Tasks.dll
Run Code Online (Sandbox Code Playgroud)

任何指导将真诚地感谢.非常感谢你提出任何你想要分享的建议.

Ser*_*kov 7

MSBuild.Community.Tasks.targets中指定了dll的路径.

<PropertyGroup>
  <MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
  <MSBuildCommunityTasksLib>$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

您可以覆盖项目中的路径.

<PropertyGroup>
   <MSBuildCommunityTasksPath>lib</MSBuildCommunityTasksPath>      
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

并保持导入相同:

<Import Project="lib\MSBuild.Community.Tasks.targets" />
Run Code Online (Sandbox Code Playgroud)