私はこれに完全に困惑しています。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の回答が他の場所で示唆しているように、いつでもファイルを手動でコピーできますが、それは目的を無効にします。
何か案は?
アップデート
上記の箇条書きに、私が試したもののうまくいかないことを追加しました。