2013-04-17 35 views
17

Visual Studio 2012用の更新プログラム2がインストールされました。新しい公開ダイアログが導入されました。私は(出版前にウェブサイトをプリコンパイル)、それはそれを行うために使用される何を作るしようとしている、とファイルMicrosoft.Web.PublishingからスローされることVS 2012公開:有効なAspnetMergePathが見つからない

"Can't find the valid AspnetMergePath" 

ことを私はエラーに実行していますよ。 AspNetCompileMerge.targets。私は、ファイルaspnet_merge.exeは、自分のコンピュータ上で複数の場所に存在することを確認しましたが、

$(GetAspNetMergePath) 

は、何らかの理由で空の文字列に評価されます。私はいくつかの構成設定が欠落しているに違いありませんが、これまでにそれらを混乱させたことはないので、なぜこれが突然開始するのか混乱しています。

これを解決する方法についてアドバイスをいただけますか?私はこのエラーで標準的なGoogleの検索を行ってきましたが、正しいソリューションに私を導いたものはありませんでした。

+0

["Visual Web Developer Publishで有効なAspnetMergePathが見つかりません"](http://stackoverflow.com/questions/12713714/cant-find-the-valid-aspnetmergepath-on-visual- web-developer-publish) –

答えて

18

同じ問題が発生しました。すべてのマイクロソフト関連のサイトを検索し、マイクロソフトからの苦情や不具合を見つけました。

ここで私は自分のシステムでそれをどのように動かしましたか? Microsoft.Web.Publishing.AspNetConfigurationMerge.targetsファイルを編集し、次の行を追加します。

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

+0

私を助けてくれてありがとう!それは完璧に働いた。 – adsilb

6

ここで解決策があるし、それを変更しない場合は、Microsoft SDKのパスは、お使いのPC上で同じであることを確認してください。ターゲットファイルを変更する必要はありません。 http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepathの回避策は、msbuildに追加の脆弱性を渡すことを示唆しています。

MSBuildのwebsite.publishproj/P:DeployOnBuild =真/ P:PublishProfile =リリース/p:VisualStudioVersion=12.0/P:AspnetMergePath = "C:\プログラムファイル私はこれを使用して動作するようにそれを得ることができましたマイクロソフトのSDK \ Windowsの\ v8.1A \ binに\ NETFX 4.5.1ツール\(x86の)\」

ここで重要なのは、Windows SDKがインストールされている場合は変更が必要になることがありAspnetMergePath財産であり、別の場所。回避策からのGetAspNetMergePathプロパティを含めると失敗しますが、SDKのバージョンによって必要になる場合があります。

17

msbuildコマンドラインを使用してビルド中に、同じ問題が発生しました。 \プログラムファイル(x86の)\ MSBuildの\ 12.0 \ビン
なくCから:CでのMSBuild.exeを使用することです修正\ WINDOWS \ Microsoft.NET \ Frameworkののの\ v4.0.30319

問題があります新しいmsbuildが今やpart of visual studio 2013であり、もはや.Netフレームワークではないことが原因です。

+0

これは何も動作しませんでした! VS 2012のために永久に設定する方法を知っていますか? – manishKungwani

+0

はい!ありがとうございました! "MSBuildがコマンドラインビルド用のToolsetバージョンを選択する方法は、Visual Studioでプロジェクトをビルドする方法と同じです。"これが最初からやり遂げられていたのであれば、両者の間の微妙なニュアンスを追跡する日数を節約することができました。 –

+0

コンパイルマシンにVS2013をインストールした後、同じ問題に陥る。私たちはJenkinsがmsbuildのコンパイルとWeb公開タスクを開始し、突然停止しました。 VS2013のmsbuildを使うようにJenkinsを変更しました。 –

0

この同じエラーで私のために働いた別のオプションは、Visual Studio(私の場合はExpress)をインストールすることでした。私はアプリケーションをサーバー上に1回構築し、その後、それを継続的な統合プロジェクトの一部として正しく構築しました。

0

私はVS 2012で同じ問題を持っていたし、私がしたすべては、以下の通りであった:

クリックして、下には、[設定]タブ、 オフに行くWebの発行、公開「出版時にプリコンパイル。」

関連する問題