尝试使用ServiceController时出现错误MSB4062

KP1*_*KP1 4 msbuild visual-studio-2010

我在x64机器上使用Visual Studio 2010和TFS 2010.

我正在尝试在构建中使用MSBuild社区任务目标.此目标存在于源代码管理中.所以在我的csproj文件中,我导入该特定目标,但我现在得到以下错误:

错误MSB4062:无法从程序集C:\ Program Files(x86)\ MSBuild\MSBuildCommunityTasks\MSB uild.Community.Tasks.dll加载"MSBuild.Community.Tasks.Attrib"任务.无法加载文件或程序集'file:/// C:\ Program文件(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>
Run Code Online (Sandbox Code Playgroud)

对上述有何想法?

当我在项目文件中指定了它时,为什么MSBuild会在其他地方尝试查找dll?

提前致谢,

Tom*_*ter 5

我认为问题来自MSBuild.Community.Tasks.Targets文件 - 这个文件实际上引用了MSBuild.Community.Tasks.dll程序集.

如果打开文件,您可以看到一堆UsingTask元素,例如:

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Attrib" />
Run Code Online (Sandbox Code Playgroud)

$(MSBuildCommunityTasksLib)属性在文件顶部定义为:

<PropertyGroup>
    <MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
    <MSBuildCommunityTasksLib>$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

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