web-dev-qa-db-ja.com

Visual Web Developer Publishで「有効なAspnetMergePathが見つかりません」?

Visual Web Developer Express 2010を使用して、次の設定を使用してFTP経由でリモートサーバーにプリコンパイルされたWebサイトを公開したいと考えています。

  • このアプリケーションの実行に必要なファイルのみをデプロイします
  • 公開する前にこのアプリケーションをプリコンパイルします
  • ウェブサイトを更新可能にする
  • データベースはデプロイされていません
  • サイトは.Zipパッケージとしてではなく、ファイル階層として展開されています

最初のビルド/デプロイはうまくいったようですが、2回目のコンパイル後に次のエラーが発生します。

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 {publishsetting}\AspnetCompileMerge\Source」は私のプロジェクトに存在します。

重要な場合は、私のプロジェクト名は「TestProject.NET」です。

フィードバックをお待ちしております。

24
user1630889

私は同じ問題にぶつかった。すべてのMicrosoft関連サイトを検索したところ、多くの苦情が見つかり、Microsoftから修正する意図はありませんでした。

これが私のシステムでどのように回避したかです。 Microsoft.Web.Publishing.AspNetConfigurationMerge.targetsファイルを編集し、次の行を追加します。 Microsoft SDKパスがPCで同じであることを確認してください。同じでない場合は、変更してください。

<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" />
15
ialiashkevich

これは、ターゲットファイルを変更する必要のないソリューションです。 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プロパティです。これは、WindowsSDKが別の場所にインストールされている場合に変更する必要がある場合があります。回避策からGetAspNetMergePathプロパティを含めると失敗しますが、SDKのバージョンによっては必要になる場合があります。

13
tspauld

必要なのは、aspnet_merge.exe、Windows SDKの一部として配布されるツールです。これはサイトをプリコンパイルすることを目的としているため、そのプリコンパイルをオフにするか、適切なバージョンの Windows SDK をインストールできます。ニースが用意したダウンロードページへのリンクがあるため、Wikipediaを参照しています。すべてをダウンロード/インストールする必要はありません(巨大です)。Webインストーラーをダウンロードして.Netツールを選択するだけで、約50メガバイトかかります。

Visual Studio 2010 Windows SDKver。にバンドルされていることに注意してください。 7.0Aは個別にダウンロードできないため、ビルドサーバーにVisual Studioをインストールするか、「 MSBuildを実行するとSDKToolsPathを読み取れません "」の回答で説明されているように調整する必要があります。

12
Andriy K

[SDKのインストールなどを含む]これらすべての回避策の1つは、[公開時にプリコンパイル]オプションを無効にすることです。これにより、必要なものを指定していなくても、AspNetMergeが存在する必要があります。最終的な出力にマージされました

私はそれをオフにする方法を理解するために非常に長い時間を費やし、オプションダイアログを熟読し、フレンドリーマニュアルを読んで、それが外のチェックボックスであることに気付くために何年もの間オフにされていたことを確認しました:

enter image description here

チェックを外すと、_.pubxml_に次の変更が加えられます。

_-    <PrecompileBeforePublish>True</PrecompileBeforePublish>
-    <EnableUpdateable>True</EnableUpdateable>
-    <DebugSymbols>False</DebugSymbols>
-    <WDPMergeOption>DonotMerge</WDPMergeOption>
_

それは私のために働いた。

NB itisただし、 ここで説明 両方のWeb(サイレントになります) _/p:DeployOnBuild_不活性)および%Program Files (x86)%\MSBuild\Microsoft\VisualStudio\v14.0の下にあるWebApplications(コンパイラエラーが発生します)サブフォルダーを介して公開します(Visual Studio 2015を想定)ツール)パッケージを正常に生成するための公開用

4
Ruben Bartelink

私は同じ問題にぶつかった。

Microsoft.Web.Publishing.AspNetConfigurationMerge.targetsファイルを編集して、次の行を追加します。必ず管理者権限でエディターを実行してください。

私の場合VS2013で正しいバージョンのVisual Studioを探します。

x64

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>

x86

<TargetFrameworkSDKToolsDirectory>C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>

そしてそれはうまくいきます!プロジェクトをコンパイルできます。

私の場合は行方不明でした。 Visual Studio 2017を15.7.5に更新した後に発生しました。その前は問題なく動作していました。追加する必要があります

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\</TargetFrameworkSDKToolsDirectory>

Microsoft.Web.Publishing.AspNetCompileMerge.targetsの129行目にありました。

0
PM12