3

我有一个 MVC4 + EF4.0 .NET 4.5 项目(比如说,MyProject)我能够在本地运行该项目就好了。当我FTP 将其部署到 Azure 网站(不是云服务)时,它也运行良好。但是,如果我执行GIT deploy,该站点大部分时间都会“运行”,直到它执行一些 EF5.0 数据库操作。我得到一个例外Unable to load the specified metadata resource

调试后,我注意到如果我:

  • GIT部署整个MVC4项目(和以前一样)
  • FTP进去,然后用我刚刚在本地构建bin\MyProject.dllbin\MyProject.dll文件(Windows 8 x64,VS2012,Oct'12 Azure工具)替换GIT推送之后(即相同的来源)

然后 Azure 托管网站运行良好(甚至是 EF5.0 数据库功能部分)。

本地构建的 .dll 比 Azure GIT 发布构建的 .dll 大约 5KB,并且两者都是“发布”模式。很明显,在 GIT 推送(Azure 内部)之后构建的项目与在我自己的 PC 上构建的项目不同。我检查了门户网站,它设置为 .NET 4.5。我也在 GIT 推送整个解决方案文件夹(只有一个项目),而不仅仅是一些零碎的东西。

当我加载本地构建和远程构建的 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 = ""),

任何人都知道为什么会发生这种情况以及解决方法可能是什么?

4

2 回答 2

2

是的,这是一个错误,将在下一个版本中修复。好消息是今天可以解决它:

首先,根据这篇文章,您需要使用自定义部署脚本。

然后,您需要根据此问题更改自定义脚本中的 MSBuild 命令行。

于 2013-01-14T18:42:22.497 回答
2

感谢上面的大卫提供的指针和提示。我投票支持他,但我也会在此处发布该问题的确切解决方案。我编辑了我的原始帖子,因为我发现有一个重大错误,直到我从头开始(移动 GIT 服务器)才注意到。所以这是整个过程,为我工作。

  • 下载 Node.JS(即使是 .NET 项目也需要它,因为 GIT 部署工具使用它)
  • 安装 azure-cli 工具(打开常规命令提示符 => npm install azure-cli -g
  • 在命令提示符下,cd到存储库的根目录 ( cd \projects\MyRepoRoot)
  • 在那里,输入azure site deploymentscript --aspWAP PathToMyProject\MyProject.csproj -s PathToMySolution.sln(显然根据需要调整路径)
  • 这将创建.deploymentdeploy.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)
  • 推送到 GIT(如果一切正常,请检查 GIT 输出)
  • 浏览到您的网站并确认它有效!

当它在下一个版本中修复时我会很高兴,所以我们不会维护构建脚本

于 2013-01-14T23:27:49.227 回答