尝试使用ServiceController时出现错误MSB4062

时间:2013-01-21 13:45:26

标签: visual-studio-2010 msbuild

我在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?

提前致谢,

1 个答案:

答案 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>属性。