【问题标题】:Azure website GIT deployment: server compiled .DLL different from local built .DLLAzure 网站 GIT 部署:服务器编译的 .DLL 与本地构建的 .DLL 不同
【发布时间】:2012-12-28 03:41:44
【问题描述】:

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

在调试时我注意到如果我:

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

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

本地构建的 .dll 比 Azure GIT 发布构建的大 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 = ""),

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

【问题讨论】:

    标签: entity-framework azure azure-web-app-service azure-git-deployment


    【解决方案1】:

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

    首先,您需要使用自定义部署脚本,根据 post

    然后你需要根据这个issue更改自定义脚本中的MSBuild命令行。

    【讨论】:

    • 谢谢,但修改票证中每个 cmets 的自定义脚本会产生此错误:remote: Creating directory "c:\output". remote: D:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(3083,5): error MSB3191: Unable to create directory "c:\output". Access to the path 'c:\output' is denied. [C:\DWASFiles\Sites\MyProject\VirtualDirectory0\site\repository\MyProject\MyProject.csproj]。我想我需要修复输出文件夹名称。约定是什么?
    • 没关系,修好了。在下面发布了修复程序。没有指针就无法完成,谢谢!
    【解决方案2】:

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

    • Download 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 输出)
    • 浏览到您的网站并确认它有效!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      相关资源
      最近更新 更多