从Nuget包引用MSBuildTasks
我正在尝试从MSBuild文件引用MSBuildTasks,但不确定在对MSBuildTasks使用NuGet时如何执行此操作 参考书上说要用从Nuget包引用MSBuildTasks,msbuild,nuget,Msbuild,Nuget,我正在尝试从MSBuild文件引用MSBuildTasks,但不确定在对MSBuildTasks使用NuGet时如何执行此操作 参考书上说要用 <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 使用msi文件安装MSBuildTasks后。但是,从NuGet安装时,它会将其放入包含版本的子文件夹中,因此如果升级MSBuildTask
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
使用msi文件安装MSBuildTasks后。但是,从NuGet安装时,它会将其放入包含版本的子文件夹中,因此如果升级MSBuildTasks,它将中断生成文件中的路径。通过NuGet安装MSBuildTasks时,引用它的最佳方式是什么?我最近设置了它, 使用MSBuildTasks版本1.4.0.45。在此版本中,将其添加到项目中会导致DLL被放置在“Build”子目录中,看起来您需要签入。我试图让它自动下载,但如果它在项目文件中被引用,它需要从一开始就在那里 为了将其添加到项目中,我使用了以下代码:
<PropertyGroup>
<MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\Build</MSBuildCommunityTasksPath>
</PropertyGroup>
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>
$(MSBuildProjectDirectory)\Build
此处使用了
MSBuildProjectDirectory
,因此可以在命令行上使用MSBuild生成它。如果其他人再次遇到此问题,请将其抛出此处。通过NuGet安装MSBuildCommunityTasks时,似乎会将.build文件夹添加到解决方案中,建议使用源代码签入该文件夹。但是,MSBuild.Community.Tasks.targets文件有一个
元素,该元素指向c:\Program Files(x86)文件夹,这是不正确的。使用MSI安装MsBuildCommunityTasks时,此文件夹有效。对于Nuget,这是无效的,它在解决方案的packages文件夹中安装MsBuildCommunityTasks。因此,我最终修改了.targets文件,并将MSBuildCommunityTasksPath更改为指向:
<MSBuildCommunityTasksPath>$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools</MSBuildCommunityTasksPath>
$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools
还是没有骰子。最后,我刚刚编辑了web项目文件,并将MSBuildCommunityTasks的导入元素更改为:
<Import Project="$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools\MSBuild.Community.Tasks.Targets"/>
这是可行的,因为它直接告诉项目在packages文件夹中查找.Targets文件。请注意,如果升级MSBuildTasks版本,则必须更改导入元素。我是一个MSBuildNoob,所以如果有人能告诉我如何实现自动化,那就太好了 目前,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" />
$(SolutionDir)\.生成
这个答案非常有用,但我发现NuGet当前放置目标文件的目录是:$(SolutionDir)\.build
,因此如果上述设置不起作用,我建议更新答案以设置以下内容:$(SolutionDir)\.build
在添加文件夹的NuGet软件包中显示PowerShell脚本。build
文件夹自1.5版以来已被删除,但《入门指南》仍建议使用它。我已经提出了一个问题。为什么没有
?你的答案可能有疏忽。