13

Web の他の場所では、コマンドラインから VS 2005-2008 IDE のパブリッシュ機能をシミュレートするために、次のようなものを使用することに関する推奨事項を見つけることができます (構文を間違えていないことを願っています!)。

msbuild /t:ResolveReferences;_CopyWebApplication /p:BuildingProject=true;OutDir=C:\inetpub\wwwroot\ blah.csproj

これで、.dll のコピーは問題ないように見えます。ただし、アプリが動作するために必要な特定の構成ファイルとテンプレート ファイルが bin フォルダーにコピーされます。たとえば、NHibernate 構成ファイルは blah.csproj に次のように表示されます。

<None Include="blah.cfg.xml">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

IDE 内から Publish を使用すると、このファイルがコピーされますが、前述の _CopyWebApplication ターゲットではコピーされません。このファイルをビルド スクリプトにコピーする必要があります。これは _CopyWebApplication の望ましい動作ですか? これを修正する方法に関する推奨事項はありますか?

編集 2010 年 4 月 21 日:

(現時点では) VS 2005 および VS 2008 プロジェクトに限定されていること、およびビルド スクリプトが MSBuild 3.x 用に作成されていることを明確にさせてください。VS 2010 に移行する準備はまだ整っていません。

また、カスタム ビルド オプションと共に Publish のようなコマンドを自動化し、将来的に展開を自動化できるように、コマンド ライン内から利用できるソリューションを探していることも明記させてください。

4

3 に答える 3

6

これは単なる回避策です。

Web サイトを公開するためのビルド スクリプトで、Web プロジェクト自体で MSBuild を実行して公開した後 (Targets="ResolveReferences;_CopyWebApplication")、コピー操作を追加しました。

<Copy SourceFiles="@(ProjectBinFiles)" DestinationFolder="$(StageBin)\%(ProjectBinFiles.RecursiveDir)" />

ここで、ProjectBinFiles は、ソース ディレクトリの bin ディレクトリにあるファイルを表す Item であり、StageBin は、公開されたサイトのディレクトリにある bin フォルダーを表すプロパティです。これまでのところ、うまくいくようです。

于 2010-04-22T22:00:07.010 に答える
0

私も同様の問題を抱えていました。答えはMSDeployを使用していると思います。現在調査中ですが、必要な機能を提供する可能性があります...

于 2010-04-18T18:44:40.817 に答える
0

私はVS 2012でこれと同じ問題を抱えていましたが、コピーする必要のあるファイルに対して次のことを行うことで最終的に修正しました。

  • Copy to Output file プロパティを Copy if newer に設定します。
  • ビルド アクション ファイル プロパティを Content (または、ファイルをコンパイルする必要がある場合は Compile) に設定します。
于 2013-10-16T15:30:32.610 に答える