尝试使用ServiceController时出现错误MSB4062

4

我使用的是Visual Studio 2010和TFS 2010,运行在x64机器上。

我正在尝试在我的构建中使用MSBuild Community Tasks target。这个target存在于源代码控制中。因此,在我的csproj文件中,我导入了特定的target,但现在出现以下错误:

错误 MSB4062: 无法从程序集C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll中加载“MSBuild.Community.Tasks.Attrib”任务。找不到文件'C:\Program F iles (x86)\MSBuild\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll'或它的一个依赖项。请确认声明是否正确,程序集及其所有依赖项是否可用,并且该任务包含实现Microsoft.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 的情况下尝试在其他地方查找它?

提前致谢。

1个回答

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>

看起来你需要在调用<Import>之前设置$(MSBuildCommunityTasksPath)属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接