0

VisualStudio2010を使用してWebアプリケーションを管理しています。このWebアプリケーションは、UI自体が1つのプロジェクトであり、ビジネスロジックが別のアセンブリに存在し、UIのプロジェクト参照として設定され、サードパーティのコードを呼び出す、いくつかのプロジェクトに編成されています。ライブラリ。

展開ビルドを実行すると、MSBuildは通常の_PublishedWebsitesフォルダーを作成し、そこにWebアプリケーションをコピーします。それが行わないのは、ビジネスレイヤーの依存関係をコピーすることです。これは、アプリケーションを実行しようとすると厄介なYSODを意味します。これで、サードパーティのライブラリをUIプロジェクトの参照として設定できます。これにより、ライブラリが期待どおりにコピーおよびデプロイされます。ただし、ビジネスレイヤーにすべての作業を行わせるという点を見逃し、追加のメンテナンスを意味します。別のサードパーティライブラリを追加する場合は、複数の場所に追加する必要があります。

デプロイメントビルドの実行時に、ビジネスレイヤーの依存関係が_PublishedWebsitesフォルダーに確実にデプロイされるようにするにはどうすればよいですか?

4

3 に答える 3

1

@Shaun Plourdeの回答に対する私のコメントによると、このシナリオはサポートされていないようです。間接的に参照されるアセンブリをビルド出力に表示する場合は、それらを直接参照する必要があります。

于 2013-05-07T04:57:53.573 に答える
0

これは、VS.NETですぐに機能するはずです。依存関係が実際に必要な場合は、「ローカルコピー」をtrueに設定してみてください。UIプロジェクトでは、これらのアセンブリへの明示的な参照は必要ありません。

小規模なプロジェクトの場合、これはコンパイルパフォーマンスの点でうまくスケーリングする可能性があります。大規模なプロジェクトの場合は、Patrick Smacchiaの記事(http://www.simple-talk.com/dotnet/.net-framework/partitioning-your-code-base-through-)で概説されているような代替アプローチを検討することをお勧めします。 net-assemblies-and-visual-studio-projects/

于 2013-01-31T05:31:54.003 に答える
0

これは完全に自動化されたソリューションではありませんが、メインプロジェクトのビルド後のスクリプトを使用してこれを解決できます。

$(WebProjectOutputDir)ビルド中のプロジェクトのディレクトリと等しくない出力ディレクトリを指定すると、変数が「_PublishedWebsites」ディレクトリに解決されるように管理されていることがわかりました。(それ以外の場合は、現在のプロジェクトディレクトリと同じです。)したがって、問題については、これをWebアプリケーションのポストビルドに配置できます。

xcopy /Y /S "$(ProjectDir)..\Your Business Logic Project\bin" "$(WebProjectOutputDir)\bin"

マシンとビルドサーバーの両方で機能するはずです。

于 2014-02-13T21:08:24.113 に答える