我在x64计算机上使用Visual Studio 2010和TFS 2010。
我正在尝试在构建中使用MSBuild社区任务目标。此目标存在于源代码管理中。所以在我的csproj文件中,我导入该特定目标,但我现在得到以下错误:
错误MSB4062:无法从程序集C:\ Program Files(x86)\ MSBuild \ MSBuildCommunityTasks \ MSB加载“MSBuild.Community.Tasks.Attrib”任务 uild.Community.Tasks.dll。无法加载文件或程序集'file:/// C:\ Program F. iles(x86)\ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.dll'或其中一个 它的依赖关系。该系统找不到指定的文件。确认一下 声明是正确的,即程序集及其所有依赖项 可用,并且该任务包含一个实现Micros的公共类 oft.Build.Framework.ITask。 [C:\ SampleTest \ SampleTest.csproj]
这是我的代码:
<Import Project="..\..\Builds\Common\MSBuildTasks\MSBuild.Community.Tasks\MSBuild.Community.Tasks.Targets" />
<Target Name="BeforeBuild">
<PropertyGroup>
<MyService>ServiceName</MyService>
</PropertyGroup>
<ServiceController ServiceName="$(MyService)" Action="Stop" />-->
</Target>
对上述内容有何看法?
为什么MSBuild在我在项目文件中指定了它时试图在其他地方查找dll?
提前致谢,
答案 0 :(得分:5)
我认为问题来自MSBuild.Community.Tasks.Targets文件 - 这个文件实际上引用了MSBuild.Community.Tasks.dll
程序集。
如果您打开文件,则可以看到一堆UsingTask
元素,例如:
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Attrib" />
$(MSBuildCommunityTasksLib)
属性在文件顶部定义为:
<PropertyGroup>
<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
<MSBuildCommunityTasksLib>$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
</PropertyGroup>
所以看起来你需要在调用$(MSBuildCommunityTasksPath)
之前设置<Import>
属性。