2013-01-21 55 views
11

移动我的构建服务器,我收到以下错误后:问题与新构建服务器

C:\Windows\Microsoft.NET\Framework64\v3.5\Microsoft.Common.targets (1682): Could not run the "GenerateResource" task because MSBuild could not create or connect to a task host with runtime "CLR2" and architecture "x64". Please ensure that (1) the requested runtime and/or architecture are available on the machine, and (2) that the required executable "MSBuildTaskHost.exe" exists and can be run.

我的配置这样说:

<ConfigurationToBuild Include="Release|Any CPU"> 
    <FlavorToBuild>Release</FlavorToBuild> 
    <PlatformToBuild>Any CPU</PlatformToBuild> 
</ConfigurationToBuild> 

我缺少什么?

+0

您是否在构建服务器上安装了Visual Studio? –

+0

我假设这是一台服务器机器。如果是的话,你是否启用了应用程序角色来安装.net 3.5并可用? – allen

+0

@dexter,你有没有找到解决方案?你可以把它作为答案吗? – korbes

回答

8

在我的情况下,当试图在32位Windows 7机器上构建解决方案时收到该错误消息。解决错误的方法是右键单击VS中的项目,选择属性,然后转到Build选项卡。在这里,我将“平台目标”从“任何CPU”改为“x86”。 HTH

+1

用VS 2013构建一个简单的WinForm,同样的问题。在编译选项卡,目标CPU下切换到x86并成功构建;切换回AnyCPU并成功重新构建。 – 2015-03-04 17:06:47

3

另一种方法是做到以下几点

单击开始 - >>右键单击计算机 - >>属性 - >>高级系统设置 - >>点击环境变量按钮,打开对话框,

然后在系统变量部分下,单击新建...按钮,键入 变量名= DISABLEOUTOFPROCTASKHOST,然后键入变量值= 1,

然后单击确定。

这应该抑制这个错误。

2

核心问题是64位可执行文件无法加载32位dll,反之亦然。

“自动”是指。 NET程序集将在平台之间的运行时切换,具体取决于它当前正在运行的计算机上的平台。

因此,使用“Auto”加载32位dll编译.NET程序集是一个等待发生的问题,这就是这个错误的全部内容。

,如果你不使用任何本地的dll,转到项目的属性为每个管理项目,并设置“目标CPU”要同当前选定的“平台”,为所有改正,可用的平台。

如果您使用的是原生dll,则必须定义2个构建配置,一个用于32位,另一个用于64位,根据目标计算机平台链接(引用)正确版本的dll并进行安装。

+0

不完全理解“如果您使用本地dll”部分。请你详细说明一下。我正在面对问题中提到的问题。我觉得你的答案可以帮助 –

9

要解决此问题,请转至.csproj file并用记事本打开。

添加以下行的默认属性组下:

<PropertyGroup> 
     <DisableOutOfProcTaskHost>true</DisableOutOfProcTaskHost> 
</PropertyGroup> 

项目现在应该编译。

+0

为什么这使它工作? – paulm

+2

请参阅https://connect.microsoft.com/VisualStudio/feedback/details/758772/generateresource-fails-for-net-3-5-application-when-net-4-5-has-been-installed for a much更长时间的讨论。基本上,这是.NET 3.5.1已知问题的解决方法。感谢Rahul Nikate提供了这样一个确切的例子。这为我修好了! – MBentley

+0

@MBentley欢迎并感谢您的链接。 –

2

我解决了这个问题,以管理员身份打开VS2010。

+0

当我打开Build/Run时,我得到了这50%的时间。这为我解决了它。 – bendecko