11

我正在尝试从 MSBuild 文件中引用 MSBuildTasks,但我不确定在将 NuGet 用于 MSBuildTasks 时如何执行此操作。

参考说使用

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

当您使用 msi 文件安装 MSBuildTasks 时。但是,从 NuGet 安装时,它会将其放在包含版本的子文件夹中,因此如果我升级 MSBuildTasks,它将破坏构建文件中的路径。通过 NuGet 安装 MSBuildTasks 时,引用它的最佳方法是什么?

4

3 回答 3

6

我最近使用 MSBuildTasks 版本 1.4.0.45为resourcelib设置了这个。在这个版本中,将它添加到项目中会导致 DLL 被放置在“构建”子目录中,看起来你需要签入。我试图让它自动下载,但如果它在项目文件中被引用,它需要从一开始就在那里。

要将其添加到项目中,我使用了以下代码:

 <PropertyGroup>
  <MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\Build</MSBuildCommunityTasksPath>
 </PropertyGroup>
 <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>

这里MSBuildProjectDirectory正在使用,因此可以在命令行上使用 MSBuild 构建它。

于 2012-08-16T11:57:11.067 回答
5

只是把它扔在这里,以防其他人再次面临这个问题。貌似在通过NuGet安装MSBuildCommunityTasks的时候,解决方案中增加了一个.build文件夹,建议用源码签入。但是,MSBuild.Community.Tasks.targets 文件有一个<MSBuildCommunityTasksPath>元素指向 c:\Program Files(x86) 文件夹,这是不正确的。当您使用 MSI 安装 MsBuildCommunityTasks 时,此文件夹有效。这在 Nuget 的情况下无效,它将 MsBuildCommunityTasks 安装在解决方案的包文件夹中。所以我最终修改了 .targets 文件,并改为MSBuildCommunityTasksPath指向:

<MSBuildCommunityTasksPath>$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools</MSBuildCommunityTasksPath>

还是没有骰子。所以最后,我只是通过 web 项目文件进行编辑,并将 MSBuildCommunityTasks 的 Import 元素更改为:

<Import Project="$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools\MSBuild.Community.Tasks.Targets"/>

这是可行的,因为它直接告诉项目在包文件夹中查找 .Targets 文件。请注意,如果升级 MSBuildTasks 版本,则必须更改 Import 元素。我是一个 MsBuild 菜鸟,所以如果有人能告诉我如何自动化这个,那就太好了!

于 2013-04-11T08:37:00.433 回答
0

目前,1.4.0.128 在解决方案目录中创建 .build 文件夹(用于框架项目)。nuget 包未正确安装到 .Net Core 3.1 项目。我在我的解决方案中创建了一个 MsBuild.Community.Tasks 4.7.2 框架项目,并在那里部署了 nuget 包。现在我应该能够从我的 .NetCore 项目中调用它,如自述文件中所述:

<PropertyGroup>
    <MSBuildCommunityTasksPath>$(SolutionDir)\.build</MSBuildCommunityTasksPath>
</PropertyGroup>  

<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />
于 2020-05-28T19:40:07.750 回答