1

VS 2010 Web アプリケーション プロジェクトを使用しています。Web アプリケーションのデフォルトの OutputPath プロパティを別のディレクトリに変更したいと考えています。ソリューションに他のプロジェクトがある場合、これは完全には機能していないようです。

最初:

  • 空の Web アプリケーション プロジェクト WebApplication1 を作成します。
  • プロジェクトのプロパティの OutputPath を から に変更しbinますc:\binaries
  • ソリューション エクスプローラーでプロジェクトを右クリックし、ビルドします。

すべてが期待どおりに機能WebApplication1.dllし、c:\binaries.

それから:

  • クラス ライブラリを同じソリューション ClassLibrary1 に追加します。
  • クラス ライブラリをプロジェクト参照として Web アプリケーションに追加します。
  • ソリューション エクスプローラーで Web アプリケーション プロジェクトを右クリックし、ビルドします。

ClassLibrary1.dllとの両方WebApplication1.dllが にコピーされますが、c:\binaries現在はのみを含むディレクトリが作成されていますWebApplication1\BinClassLibarary1.dll

質問:

誰もこれに遭遇したことがありますか?私が見つけたウェブ上の唯一の参考文献はthisで、答えはありませんでした。フォルダの作成を無効にする方法に感謝しBinます。

より詳しい情報

  • これは、ビジュアル スタジオ内からビルドする場合にのみ発生します。を使用するmsbuild WebApplication1.csprojと、この不思議なBinディレクトリは作成されません。

  • msbuild ログを調べましたが、役に立ちませんでした。そのパスに関連するプロパティは見つかりませんでした。大文字Bの forBinも奇妙です。msbuild で使用される場合、すべてのパスは通常bin.

  • 最後にWebApplication.targets、Web アプリケーションの proj ファイルから Import ファイルを削除しましたが、違いはありませんでした。実際、msbuild ログを見ると、WebApplication.targets のターゲットが実行されていないようです。

4

1 に答える 1

1

Webアプリには、webapplication1プロジェクトディレクトリと同じデフォルトの出力パスがあります。ビンカタログは、依存するアセンブリがどこにあるかを見つけるためにサイトによって内部的に使用されます(プロービングを参照)。デフォルトでは、 Microsoft.Web.Publishing.targetsはこれを使用して、依存するすべてのアセンブリをローカルにコピーします。

完全なWebアプリ出力は、*。aspx、.js、web.config、bin\ .dll-filesなどのサイトです。c:\ binarysディレクトリにコピーするには、代わりにOutDirを指定します。ただし、その結果、パスc:\ binarys \ _PublishedWebsites\WebApplication1の下に完全なサイトが表示されます。また、_PublishedWebsitesサブフォルダーの名前を変更できませんでした。

このデフォルトの動作は非常に厳密なようです。ビルドターゲットの内部は、C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications\Microsoft.WebApplication.targetsで確認できます。

編集:本当にbinカタログを見たくない場合は、svn / git/...で無視してください。

于 2011-02-21T11:14:39.043 に答える