私は MVC4 + EF4.0 .NET 4.5 プロジェクト (たとえば、MyProject
) を持っています。プロジェクトをローカルで問題なく実行できます。Azure Web サイト (クラウド サービスではない)にFTP デプロイすると、正常に動作します。ただし、GIT deployを実行すると、EF5.0 データベース操作を実行するまで、サイトはほとんどの場合「実行」されます。例外が発生しますUnable to load the specified metadata resource
。
デバッグ時に、次の場合に気付きました。
- GIT は MVC4 プロジェクト全体をデプロイします (以前と同様)
- FTP を入力し、GIT プッシュ (つまり、同じソース) 後にローカルでビルドしたばかり
bin\MyProject.dll
のファイル (Windows 8 x64、VS2012、Oct'12 Azure ツール) に置き換えます。bin\MyProject.dll
その後、Azure がホストする Web サイトは正常に動作します (EF5.0 データベース機能部分も)。
ローカルにビルドされた .dll は、Azure GIT パブリッシュでビルドされたものよりも約 5 KB 大きく、どちらも「リリース」モードです。GIT プッシュ (Azure 内) 後にビルドされたプロジェクトは、自分の PC とは異なる方法でビルドされていることは明らかです。ポータルを確認したところ、.NET 4.5 に設定されています。また、小さな断片だけでなく、ソリューション フォルダー全体 (1 つのプロジェクトのみ) を GIT でプッシュしています。
ローカルでビルドされた MyProject.dll ファイルとリモートでビルドされた MyProject.dll ファイルをロードすると、次の違いに気付きました( FrameworkDisplayName )
ローカル:
System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5"),
リモート:
System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ""),
なぜこれが起こっているのか、そしてどのような修正が考えられるのか、誰でも知っていますか?