我正在尝试从MSBuild文件引用MSBuildTasks,并且我不确定在使用NuGet for MSBuildTasks时如何执行此操作.
参考说要使用
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
Run Code Online (Sandbox Code Playgroud)
使用msi文件安装MSBuildTasks时.但是,从NuGet安装时,它会将其放在包含版本的子文件夹中,因此如果我升级MSBuildTasks,它将破坏构建文件中的路径.通过NuGet安装MSBuildTasks时,引用MSBuildTasks的最佳方法是什么?
我最近使用MSBuildTasks版本1.4.0.45 为resourcelib设置了这个.在这个版本中将它添加到项目导致DLL被放置在"Build"子目录中,看起来你需要签入.我试图让它自动下载,但如果它在项目文件中引用它需要从一开始就在那里.
要将它添加到项目中,我使用了以下代码:
<PropertyGroup>
<MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\Build</MSBuildCommunityTasksPath>
</PropertyGroup>
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>
Run Code Online (Sandbox Code Playgroud)
这里MSBuildProjectDirectory正在使用,因此可以在命令行上使用MSBuild构建它.
只是把它扔到这里以防其他人再次面对这个问题.看来,当您通过NuGet安装MSBuildCommunityTasks时,会在解决方案中添加.build文件夹,建议使用源代码签入.但是,MSBuild.Community.Tasks.targets文件有一个<MSBuildCommunityTasksPath>元素,它指向c:\ Program Files(x86)文件夹,这是不正确的.使用MSI安装MsBuildCommunityTasks时,此文件夹有效.对于Nuget,这是无效的,Nuget会在解决方案的packages文件夹中安装MsBuildCommunityTasks.所以我最终修改了.targets文件,并改为MSBuildCommunityTasksPath指向:
<MSBuildCommunityTasksPath>$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools</MSBuildCommunityTasksPath>
Run Code Online (Sandbox Code Playgroud)
仍然没有骰子.最后,我刚刚编辑了web项目文件,并将MSBuildCommunityTasks的Import元素更改为:
<Import Project="$(SolutionDir)\packages\MSBuildTasks.1.4.0.56\tools\MSBuild.Community.Tasks.Targets"/>
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为它直接告诉项目在packages文件夹中查找.Targets文件.请注意,如果升级MSBuildTasks版本,则必须更改Import元素.我是一个MsBuild菜鸟,所以如果有人能告诉我如何自动化这个,那就太好了!
| 归档时间: |
|
| 查看次数: |
4143 次 |
| 最近记录: |