asp.net - "Can' t 在 Visual Web Developer Publish 上找到有效的 AspnetMergePath”?

标签 asp.net visual-studio deployment publishing visual-web-developer

我想使用 Visual Web Developer Express 2010 发布一个网站,使用以下设置通过 FTP 预编译到远程服务器:

  • 仅部署运行此应用程序所需的文件
  • 发布前预编译此应用程序
  • 允许网站更新
  • 没有正在部署数据库
  • 站点被部署为文件层次结构,而不是 .zip 包

  • 我的第一次构建/部署似乎进展顺利,但在第二次编译后,我收到以下错误:
    Transformed web.config using C:\path_to_site\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\web.config.
    Copying all files to temporary location below for package/publish:
    obj\Debug\AspnetCompileMerge\Source.
    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132,5): Error : Can't find the valid AspnetMergePath
    

    这是 Microsoft.Web.Publishing.AspNetConfigurationMerge.targets 文件内容的子集:
      <Target
          Name="GetAspNetMergePath"
          DependsOnTargets="$(GetAspNetMergePathDependsOn)"
          Condition ="'$(GetAspNetMergePath)' != 'false'">
        <PropertyGroup>
          <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" />
      </Target>
    

    编辑:在发布之前更改发布设置以删除所有现有文件毕竟不能解决问题。因此,我假设问题现在是本地问题。

    我的 web.config 中似乎没有 AspMergePath 标记。我不知道我是否应该手动添加标签。但是,我的项目中确实存在路径“obj{publish setting}\AspnetCompileMerge\Source”。

    如果重要,我的项目名称是“TestProject.NET”

    感谢您的反馈。

    最佳答案

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

    在这里,我如何在我的系统中解决它。编辑 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" />
    

    关于asp.net - "Can' t 在 Visual Web Developer Publish 上找到有效的 AspnetMergePath”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713714/

    相关文章:

    asp.net - SQLDataReader:处理空值

    vb.net - 如何获取资源文件中所有资源的名称

    node.js - Nodejs 部署到 Heroku 时出错

    ruby-on-rails - "502 Bad Gateway"有乘客

    asp.net - Response.Cache.SetCacheability 和 Response.Cache.SetAllowResponseInBrowserHistory 是什么意思?

    c# - Web服务URI的动态绑定(bind)

    c - 获取 Debug Build 下 main() 函数的地址

    c# - 找不到命名空间或数据类型 NavMeshAgent Unity 3d

    ruby-on-rails-3 - 以不同用户身份运行部署任务

    javascript - 使用 CSS 格式化下拉列表