使用Visual Studio 2008 Web部署项目-查找aspnet_merge.exe时出错

时间:2020-03-05 18:43:28  来源:igfitidea点击:

我最近将VS2005 Web部署项目升级到VS2008,现在在构建时出现以下错误:

The specified task executable location "bin\aspnet_merge.exe" is invalid.

这是错误的来源(来自Web部署目标文件):

<Target Name="AspNetMerge" Condition="'$(UseMerge)' == 'true'" DependsOnTargets="$(MergeDependsOn)">
    <AspNetMerge
      ExePath="$(FrameworkSDKDir)bin"
      ApplicationPath="$(TempBuildDir)"
      KeyFile="$(_FullKeyFile)"
      DelaySign="$(DelaySign)"
      Prefix="$(AssemblyPrefixName)"
      SingleAssemblyName="$(SingleAssemblyName)"
      Debug="$(DebugSymbols)"
      Nologo="$(NoLogo)"
      ContentAssemblyName="$(ContentAssemblyName)"
      ErrorStack="$(ErrorStack)"
      RemoveCompiledFiles="$(DeleteAppCodeCompiledFiles)"
      CopyAttributes="$(CopyAssemblyAttributes)"
      AssemblyInfo="$(AssemblyInfoDll)"
      MergeXmlDocs="$(MergeXmlDocs)"
      ErrorLogFile="$(MergeErrorLogFile)"
      />

这个问题有什么解决方案?

注意我还从VS2008重新创建了一个Web部署项目,并得到了相同的错误。

解决方案

回答

显然,aspnet_merge.exe(和所有其他SDK工具)未打包在Visual Studio 2008中。VisualStudio 2005将这些工具打包为安装的一部分。

获得此功能的地方是Windows 2008 SDK的安装(最新下载)。
Windows 7 / Windows 2008 R2 SDK:此处

解决方案是安装Windows SDK,并确保在启动IDE之前将FrameworkSDKDDir设置为环境变量。批处理命令设置此变量:

SET FrameworkSDKDir="C:\Program Files\Microsoft SDKs\Windows\v6.1"

注意:如果不在默认位置,则需要进行修改以指向安装SDK的位置。

现在,VS2008将知道在哪里可以找到aspnet_merge.exe。

回答

我只是在尝试使用MSBuild在服务器上构建我的Web应用程序时遇到了同样的问题。我下载了SDK的"网络"版本,因为该设置只有500KB,它会提示我们安装哪些组件,并且只会下载并安装我们选择的组件。我未选中" .NET开发工具"之外的所有内容。然后,它下载并安装了大约250MB的内容,包括aspnet_merge.exe和sgen.exe。

我们可以在此处下载Win 7和.NET 3.5 SP1的winsdk_web.exe安装程序。