【问题标题】:VS 2012 Publish: Can't find the valid AspnetMergePathVS 2012 发布:找不到有效的 AspnetMergePath
【发布时间】:2013-04-17 21:51:07
【问题描述】:

我刚刚安装了 Visual Studio 2012 的更新 2,它引入了一个新的发布对话框。我试图让它做它以前做的事情(在发布之前预编译一个网站),我遇到了它的错误

"Can't find the valid AspnetMergePath"

从文件 Microsoft.Web.Publishing.AspNetCompileMerge.targets 中抛出。我已经确认文件 aspnet_merge.exe 存在于我的计算机上的多个位置,但是

$(GetAspNetMergePath) 

出于某种原因正在评估一个空字符串。我一定是遗漏了一些配置设置,但我以前从未弄乱过这些设置,所以我很困惑为什么会突然开始。

任何人都可以提供有关如何解决此问题的建议吗?我已针对此错误进行了标准的 Google 搜索,但没有找到正确的解决方案。

【问题讨论】:

标签: asp.net visual-studio-2012 publish


【解决方案1】:

我遇到了同样的问题。搜索了所有与微软相关的网站,发现很多投诉,微软无意修复它。

这是我在系统中的工作方式。编辑Microsoft.Web.Publishing.AspNetConfigurationMerge.targets 文件并添加以下行。请确保您的 PC 上的 Microsoft SDK 路径相同,否则请更改它:

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory>

它应该是这样的:

  <Target
  Name="GetAspNetMergePath"
  DependsOnTargets="$(GetAspNetMergePathDependsOn)"
  Condition ="'$(GetAspNetMergePath)' != 'false'">
<PropertyGroup>
  <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory>
  <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
  <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
</PropertyGroup>
<Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
       Text="Can't find the valid AspnetMergePath" />

【讨论】:

    【解决方案2】:

    我今天在使用 msbuild 命令行构建时遇到了同样的问题。修复方法是使用 C:\Program Files (x86)\MSBuild\12.0\Bin
    中的 msbuild.exe 而不是来自 C:\Windows\Microsoft.NET\Framework\v4.0.30319

    问题是由于新的 msbuild 现在是 part of visual studio 2013 而不是 .Net 框架。

    【讨论】:

    • 除此之外没有任何效果!你知道我怎样才能为 VS 2012 永久设置它吗?
    • 是的!谢谢!您的链接中的另一个重要观点:“MSBuild 为命令行构建选择工具集版本的方式现在与 Visual Studio 构建项目的方式相同”。如果从一开始就这样做的话,我可以节省几天的时间来追踪两者之间的细微差别。
    • 在我们的编译机上安装了 VS2013 后遇到了同样的问题。我们让 Jenkins 启动了 msbuild 编译和网络发布任务,但它们突然停止工作。更改 Jenkins 以使用 VS2013 msbuild 修复的东西。
    • 虽然这可能是一个很好的答案,但我不知道如何实际尝试它 - 更多细节可能会很好!知道做什么是一回事,知道怎么做完全是另一回事
    • 现在使用 MSBuild v15 时,使用预编译配置文件时会出现此问题。
    【解决方案3】:

    这是一个不需要更改目标文件的解决方案。 http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath 的解决方法建议将其他属性传递给 msbuild。我能够使用它来工作:

    msbuild website.publishproj /p:DeployOnBuild=true /p:PublishProfile=Release /p:VisualStudioVersion=12.0 /p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin \NETFX 4.5.1 工具\"

    这里的关键是AspnetMergePath 属性,如果 Windows SDK 安装在不同的位置,您可能需要更改该属性。如果我在解决方法中包含 GetAspNetMergePath 属性,它会失败,但根据 SDK 版本可能需要这样做。

    【讨论】:

      【解决方案4】:

      我在 VS 2012 中遇到了同样的问题,我所做的只是:

      单击发布,在发布 Web 下转到设置选项卡, 取消选中“发布期间预编译”。

      【讨论】:

        【解决方案5】:

        另一个对我有用的同样错误的选项是安装 Visual Studio(在我的情况下是 express)。我在服务器上构建了一次应用程序,然后从那时起,它作为我的持续集成项目的一部分正确构建。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多