首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >x64计算机上的MSBuild.Community.Tasks.Attrib失败

x64计算机上的MSBuild.Community.Tasks.Attrib失败
EN

Stack Overflow用户
提问于 2009-09-07 05:05:20
回答 3查看 13K关注 0票数 9

当在64位构建机器上运行时,我遇到了来自MSBuild Community Tasks Project的Attrib任务的问题。

我把这个小的测试项目放在一起来展示问题是什么:

代码语言:javascript
复制
<Project ToolsVersion="3.5" DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

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

  <Target Name="PrintProperties">
    <Message Text="MSBuildCommunityTasksPath: $(MSBuildCommunityTasksPath)"/>
    <Message Text="MSBuildCommunityTasksLib: $(MSBuildCommunityTasksLib)"/>
    <Message Text="MSBuildNodeCount: $(MSBuildNodeCount)"/>
    <Message Text="MSBuildExtensionsPath: $(MSBuildExtensionsPath)"/>
    <Message Text="MSBuildExtensionsPath32: $(MSBuildExtensionsPath32)"/>
    <Message Text="MSBuildProjectDirectoryNoRoot: $(MSBuildProjectDirectoryNoRoot)"/>
    <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)"/>
    <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)"/>
    <Message Text="MSBuildBinPath: $(MSBuildBinPath)"/>
    <Message Text="MSBuildExtensionsPath: $(MSBuildExtensionsPath)"/>
    <Message Text="MSBuildProjectDefaultTargets: $(MSBuildProjectDefaultTargets)"/>
    <Message Text="MSBuildProjectDirectory: $(MSBuildProjectDirectory)"/> 
    <Message Text="MSBuildProjectExtension: $(MSBuildProjectExtension)"/>
    <Message Text="MSBuildProjectFile: $(MSBuildProjectFile)"/>
    <Message Text="MSBuildProjectFullPath: $(MSBuildProjectFullPath)"/>
    <Message Text="MSBuildProjectName: $(MSBuildProjectName)"/>
    <Message Text="MSBuildStartupDirectory: $(MSBuildStartupDirectory)"/> 
  </Target>

  <Target Name="TestAttrib" DependsOnTargets="PrintProperties">
    <Attrib Files="Test.txt" ReadOnly="false" />
  </Target>

</Project>

当我尝试使用TestAttrib作为目标,使用MSBuild构建这个项目时,我得到了以下结果

C:>msbuild "C:_Source Code\Test.vbproj“/t:TestAttrib Microsoft (R) Build Engine版本3.5.30729.1 Microsoft .NET框架,版本2.0.50727.4016版权所有(C) Microsoft Corporation 2007。版权所有。

构建已启动7/09/2009 2:50:12 PM

节点0上的项目"C:_Source Code\Test.vbproj“(TestAttrib目标)。

MSBuildCommunityTasksLib: C:\Program Files\MSBuild\MSBuildCommunityTasks\MSBu ild.Community.Tasks.dll

MSBuildNodeCount: 1

MSBuildExtensionsPath: C:\Program Files\MSBuild

MSBuildExtensionsPath32: C:\Program Files (x86)\MSBuild

MSBuildProjectDirectoryNoRoot:_Source代码

MSBuildToolsPath: c:\Windows\Microsoft.NET\Framework64\v3.5

MSBuildToolsVersion: 3.5

MSBuildBinPath: c:\Windows\Microsoft.NET\Framework64\v3.5

MSBuildExtensionsPath: C:\Program Files\MSBuild

MSBuildProjectDefaultTargets:构建

MSBuildProjectDirectory: C:_Source代码

MSBuildProjectExtension:.vbproj

MSBuildProjectFile: Test.vbproj

MSBuildProjectFullPath: C:_Source Code\Test.vbproj

MSBuildProjectName:测试

MSBuildStartupDirectory: C:\

C:_Source Code\Test.vbproj(26,5):错误MSB4062:无法从程序集C:\Program MSB4062加载"MSBuild.Community.Tasks.Attrib“任务未能加载文件或程序集的file:///C:\Program Files\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll‘或其依赖项之一。系统找不到指定的文件。确认声明是正确的,并且程序集及其所有依赖项都可用。已完成生成项目"C:_Source Code\Test.vbproj“(TestAttrib目标) --失败。

生成失败。

"C:_Source Code\Test.vbproj“(TestAttrib目标) (1) ->(TestAttrib目标) -> C:_Source Code\Test.vbproj(26,5):错误MSB4062:无法从程序集C:\Program Files\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll.加载"MSBuild.Community.Tasks.Attrib”任务未能加载文件或程序集的file:///C:\Program Files\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll‘或其依赖项之一。系统找不到指定的文件。确认声明是正确的,并且程序集及其所有依赖项都可用。

代码语言:javascript
复制
0 Warning(s)
1 Error(s)

时间已过去00:00:00.05

当我使用(MSBuildExtensionsPath32)变量显式导入任务时,为什么MSBuild要在C:\Program Files\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll中搜索Attrib任务?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-07 07:02:26

我似乎已经通过编辑"C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets“”的第6行修复了这个问题

最初是:

代码语言:javascript
复制
<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>

我把它改成:

代码语言:javascript
复制
<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath32)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>

注意$(MSBuildExtensionsPath)到$(MSBuildExtensionsPath32)的更改

虽然这似乎已经解决了我现在的问题,但我不确定为什么我必须首先编辑MSBuild.Community.Tasks.Targets文件-我以为安装程序会确保该文件是正确的。因此,也许编辑MSBuild.Community.Tasks.Targets文件并不是最好的主意,所以如果您决定遵循我的建议,一定要小心。

票数 6
EN

Stack Overflow用户

发布于 2011-10-10 07:40:33

这显然是一个为时已晚的答案,但我想我会补充这一点,以防其他人有这个问题。您可以只在构建文件的属性组中定义MSBuildCommunityTasksPath属性,而不是编辑MSBuild.Community.Tasks.Targets文件。例如,我在构建脚本的顶部有如下内容:

代码语言:javascript
复制
<PropertyGroup>
  <ToolsDirectory>$(MSBuildProjectDirectory)\tools</ToolsDirectory>
  <MSBuildCommunityTasksPath>$(ToolsDirectory)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
</PropertyGroup>

然后,我将MSBuildCommunityTasks文件夹存储在源代码管理中的工具目录中。这意味着其他人可以拉出源代码并直接构建它,而不需要安装任何东西。

干杯,亚当

票数 6
EN

Stack Overflow用户

发布于 2019-03-29 00:36:01

这是非常过时的帮助。自此票证以来,ms构建过程已发生变化,最好按照此处的说明进行操作https://github.com/loresoft/msbuildtasks

对于我的项目,我在解决方案中使用了Build文件夹,并在该解决方案中创建了一个MSBuildTasks文件夹,我在该文件夹中复制Zip文件版本中的最新MBBuild.Community.Task文件。并将以下行放入我的msbuild文件中

代码语言:javascript
复制
   <PropertyGroup>
     <MSBuildCommunityTasksPath>.\MSBuildTasks</MSBuildCommunityTasksPath>
   </PropertyGroup>  

  <Import Project=".\MSBuildTasks\MSBuild.Community.Tasks.Targets" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1387616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档