我有一个MVC4 + EF4.0 .NET 4.5项目(比如MyProject
)我能够在本地运行项目就好了。当我 FTP部署它到Azure网站(而不是云服务)时,它运行正常。但是,如果我执行 GIT部署,则网站“运行”大部分,直到执行某些EF5.0数据库操作。我得到例外Unable to load the specified metadata resource
。
经过调试,我发现如果我:
bin\MyProject.dll
,并将bin\MyProject.dll
文件替换为我刚刚在本地构建的System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5"),
文件(Windows 8 x64,VS2012,Oct'12 Azure工具)然后Azure托管网站运行得很好(甚至是EF5.0数据库功能部分)。
本地构建的.dll比Azure GIT发布的内置版本大约5KB,并且都是“发布”模式。很明显,在GIT推送之后构建的项目(在Azure内部)的构建方式与在我自己的PC上的构建方式不同。我检查了门户网站,它设置为.NET 4.5。我也是GIT推送整个解决方案文件夹(只有一个项目),而不仅仅是一点点小事。
当我加载本地构建的以及远程构建的MyProject.dll文件时,我注意到以下差异( FrameworkDisplayName )
local:System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ""),
远程:{{1}}
任何人都知道为什么会发生这种情况以及解决方案可能是什么?
答案 0 :(得分:2)
答案 1 :(得分:2)
对于指针和提示,上面是大卫。我投票给他,但我也会在这里发布问题的确切解决方案。我编辑了我原来的帖子,因为我发现有一个主要的错误,直到我从头开始(移动GIT服务器)才注意到。所以这是整个过程,为我工作。
npm install azure-cli -g
)cd
到存储库的根目录(cd \projects\MyRepoRoot
)azure site deploymentscript --aspWAP PathToMyProject\MyProject.csproj -s PathToMySolution.sln
(显然根据需要调整路径).deployment
和deploy.cmd
个文件deploy.cmd
文件,找到以%MSBUILD_PATH%
开头的行(只会是一行)/t:Build
参数。例如:
%MSBUILD_PATH% <blah blah> /verbosity:m /t:pipelinePreDeployCopyAllFilesToOneFolder
%MSBUILD_PATH% <blah blah> /verbosity:m /t:Build /t:pipelinePreDeployCopyAllFilesToOneFolder
)如果在下一版本中修复它,我将很高兴,因此我们不会维护构建脚本