3

我有一個MVC4 + EF4.0 .NET 4.5項目(比如說,MyProject)我能夠在本地運行項目就好了。當我FTP部署它到Azure網站(而不是雲服務)它也運行良好。但是,如果我做了GIT部署,該網站大部分都會「運行」,直到它執行一些EF5.0數據庫操作。我收到一個例外Unable to load the specified metadata resourceAzure網站GIT部署:服務器編譯.DLL不同於本地構建.DLL

在調試我發現,如果我:

  • GIT(如前)部署整個MVC4項目
  • FTP中,然後替換bin\MyProject.dll用,我只是在本地建立了bin\MyProject.dll文件(Windows 8 64位,VS2012,Oct'12天青工具)在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 = ""),

任何人都知道爲什麼會發生這種情況以及該修補程序可能是什麼?

回答

2

信貸去上面的大衛的指針和提示。我投了他一票,但我也會在這裏發佈確切的解決方案。我編輯了我的原始文章,因爲我發現有一個重要的錯誤,直到我從頭開始(移動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輸出,如果一切正常)
  • 瀏覽到您的網站,並確認它的作品!

當它固定在下一版本,所以我們不會保持構建腳本

2

是的,這是一個將在下一個版本中修復的錯誤。好消息是,今天有可能解決它:

首先,您需要使用自定義部署腳本,根據此post

然後,您需要根據此issue更改自定義腳本中的MSBuild命令行。

+0

謝謝,但這個錯誤修改每個註釋的自定義腳本中票收益率我會很高興:'遠程:創建目錄「c:\ output」。 remote:D:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets(3083,5):錯誤MSB3191:無法創建目錄「c:\ output」 。訪問路徑'c:\ output'被拒絕。 [C:\ DWASFiles \網站\ MyProject的\ VirtualDirectory0 \站點\庫\ MyProject的\ MyProject.csproj]'。我想我需要修復輸出文件夾名稱。什麼是約定? – DeepSpace101

+0

沒關係,修復它。發佈下面的修復。沒有指針就無法完成它,謝謝! – DeepSpace101

+0

太棒了!請標記爲答案,如果解決了你的問題:) –