5

I have a solution which contains many class libraries and an ASP .NET website which references those assemblies.

When I build the solution from within the IDE, all assemblies referenced by the website end up in the bin directory. Great!

When I use MsBuild from the command line, all the referenced assemblies are not copied to the bin directory. Why?

My command line is simply:

msbuild.exe d:\myproject\mysolution.sln
4

9 に答える 9

1

私が直面していた問題は、ライブラリ プロジェクトに依存するプロジェクトがあることでした。ビルドするために、次の手順に従っていました。

msbuild.exe myproject.vbproj /T:Rebuild
msbuild.exe myproject.vbproj /T:Package

もちろん、それはライブラリのdllファイルがbinになく、最も重要なのはパッケージのzipファイルにないことを意味していました。私はこれが完全に機能することを発見しました:

msbuild.exe myproject.vbproj /T:Rebuild;Package

なぜこれが機能したのか、そもそもなぜ機能しなかったのか、私にはわかりません。しかし、それが役立つことを願っています。

于 2012-07-18T22:46:49.490 に答える
1

この問題に関するさまざまな参照がネット上に散らばっているのを見つけました。どうやら、コマンド ラインでの MSBuild は、依存関係のチェーンのトレースが IDE ほど得意ではないようです。

したがって、私が理解しているように、A が C に依存する B に依存している場合、コマンド ラインは A が C に依存していることを認識しない場合があります。

私が見つけた唯一の解決策は、プロジェクトの依存関係を手動で設定して、ASP プロジェクトが依存するすべてのものを参照するようにすることです。コマンド ラインですべてを把握できるとは思わないでください。これは私にとってはうまくいきましたが、私は5つのプロジェクトしか持っていないので、始めるのに苦労することはありません.

これが役立つことを願っています。

于 2008-11-19T21:22:43.850 に答える
0

どのmsbuildを参照していますか?それは正しいものですか?

私は一般的に次のように呼び出します(バッチファイルから):

%WINDIR%\ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe deploy.proj / v:n

この例では、deploy.projは単なる通常のmsbuildファイルであり、.slnファイルでmsbuildを呼び出す前後に他の処理を実行します。

于 2008-11-07T14:49:07.293 に答える
0

この問題は、binディレクトリがフレームワークのソリューションのデフォルトではない場合にのみ発生すると思います。

msbuildは、セットアップされた各プロジェクトを使用してビルドすることを理解しています。その場合は、各プロジェクトのプロパティページに移動し、ビルド後のイベントのコマンドライン引数を確認してください。

于 2008-11-07T14:54:20.840 に答える
0

私は ASP.NET に msbuild を使用していませんが、aspnet_compiler を使用しています。でも...理由は覚えていません。ごめん。

%windir%\Microsoft.Net\framework\v2.0.50727\aspnet_compiler -v \%~n1  -f -p .\%1 .\Website
于 2008-11-13T19:07:48.010 に答える
0

MSBuild 3.5 および msbuild 4.5 の既知の問題。にあるMsbuild 4を使用しています

 c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe <yourSolutionFile>.sln

問題を解決するようです。

于 2014-02-12T13:56:22.250 に答える
0

プロジェクト プロパティのビルド後の手順を使用して、プロジェクトの出力を特定の場所にコピーできます。

これにより、Sln ファイルと同じディレクトリ内の Assemblies ディレクトリにコピーされます。これは、すべてのプロジェクトのビルド後のステップにあります。

md "$(SolutionDir)Assemblies"
del "$(SolutionDir)Assemblies\$(TargetFileName)"
copy "$(TargetPath)" "$(SolutionDir)Assemblies" /y
于 2010-02-23T01:48:01.183 に答える
0

MSBuild でいつでもコピー タスクを使用して、アセンブリを適切なディレクトリにプルできます。少し前に質問をして、結局自分で答えました。コピー タスクをセットアップして、別のプロジェクトから出力を取得し、それをターゲット プロジェクトにプルする方法を示します。

MSBuild は、別のプロジェクトからの出力を現在のプロジェクトの出力にコピーします

于 2008-11-13T17:45:48.957 に答える
-3

思い出すと、MSBuild は参照されたアセンブリをコピーしません。少し前に「解決策」を投稿しました: http://www.brunofigueiredo.com/post/Issue-Tracker-part-IV-The-Build-Enviroment-using-MSBuild-(or-NAnt).aspx

それが役に立てば幸い。

于 2008-11-07T14:59:19.223 に答える