1

私はこれに完全に困惑しています。Google スタック オーバーフローで見つけたアイデアがうまくいかず、その理由がわかりません。

最近、プロジェクトを Visual Studio 2012 および .NET 4.5 を使用する MVC 4 にアップグレードしたところ、適切に公開されなくなりました。

MVC4 または .NET4.5 にアップグレードせずに Visual Studio 2012 でプロジェクトを公開する別のブランチがあり、それが機能しているように見えるので、Visual Studio の問題ではないと推測しています。私たちのプロジェクトでMVC 4が設定されている方法とちょうど何か。MVC 3 は、ソース管理で作成した lib フォルダーから直接 DLL を参照することによって追加されました (ただし、プロジェクトの外部)。MVC 4 は NuGet 経由で追加されます。

問題は、System.Web.Helpers (とりわけ) が公開アプリケーションの bin ディレクトリに表示されないことです。これは、テスト サーバーに配置されたときに、DLL が見つからないため実行されないことを意味します。

  • 私は Copy Local を TRUE に設定しました (実際には既に設定されていましたが、オフにしてから再度オンにした場合)。また、ファイルがGACに存在する場合、この設定が何であれ、コピーされないことをどこかで読みました。ただし、確認したところ、GACにはありません。
  • MVC アプリケーションの参照が、NuGet パッケージ フォルダー内のファイルのバージョンを指していることを確認しました。(元々はそうではありませんでしたが、NuGetパッケージを削除して読み込んでも役に立たなかったので、csprojファイルを手動で編集してそれを行いました)
  • 関連ファイルをコピーするビルド後のイベントを追加しました (プロジェクトの bin ディレクトリにありますが、公開には影響しません)。
  • Phil Haack のブログ_bin_deployableAssembliesに従って、フォルダーを配置しようとしましたが、これは Visual Studio 2012 では機能しないようです。
  • this SO answer に従って、csproj ファイル (単なる MSBuild ファイル) を変更して、関連するファイルをコピーしようとしました。しかし、何らかの理由で、それも機能したくありません。

試せるものがなくなりました。まあ、いくつかのSOの回答が他の場所で示唆しているように、いつでもファイルを手動でコピーできますが、それは目的を無効にします。

何か案は?

アップデート

上記の箇条書きに、私が試したもののうまくいかないことを追加しました。

4

2 に答える 2

0

私は答えを見つけました。MSBuild のコピー コマンドを機能させることができなかったため、これはちょっとしたハックです。そのため、Exec コマンドを使用して xcopy にコピーを実行させました。

まず_bin_PublishAssemblies、プロジェクトに呼び出されたフォルダーを追加し、ビルド プロセスがまだ取得されていない公開する必要があるアセンブリをそこに配置しました。

次に、csproj ファイルの末尾に以下を追加しました。

  <Target Name="AfterBuild">
    <Message Text="Build | Copying assemblies to output folder ($(OutputPath))" Importance="high" />
    <Exec Command="ECHO Going to copy from '$(ProjectDir)\_bin_PublishAssemblies'" />
    <Exec Command="xcopy $(ProjectDir)\_bin_PublishAssemblies\* $(OutputPath) /Y" />
  </Target>
  <Target Name="CopyBinFiles" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish">
    <Message Text="Deploy | Copying assemblies to output folder ($(_PackageTempDir)\bin\)" Importance="high" />
    <Exec Command="ECHO Going to copy from '$(ProjectDir)\_bin_PublishAssemblies'" />
    <Exec Command="xcopy $(ProjectDir)\_bin_PublishAssemblies\* $(_PackageTempDir)\bin\ /Y" />
  </Target>
于 2013-10-11T08:25:53.553 に答える
0

これはどう:

  1. ソリューション エクスプローラーで MVC プロジェクトを右クリックします。
  2. 展開可能な依存関係を追加する
  3. ティック MVC
于 2013-10-10T14:05:54.787 に答える