您可以將<dependentAssembly>元素添加到您的web.config
以確保將項目部署到Azure時包含FSharp.Data
程序集。在將混合F#/ C#ASP.NET MVC項目部署到Azure之前,我已經使用過這種技術;這是一段時間,但我不認爲我必須改變引用程序集(我通過NuGet添加)的Copy Local
設置。
無論如何,你需要添加應該是這個樣子的條目:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Data" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
基於羅布的評論,他仍然得到同樣的錯誤消息,我這裏還有我會採取下一步行動來診斷問題。
- 構建Azure部署包(不需要部署它)。完成構建後,找到部署包文件(
*.cspkg
);這實際上只是一個zip文件,因此將內容提取到一個文件夾中,例如7-zip。在提取的文件夾中,應該有一個文件,其中*.cssx
擴展名比其他文件大得多;它也是一個zip文件,因此將其提取到另一個文件夾中,然後使用Windows資源管理器瀏覽該文件夾。從那裏進入sitesroot
文件夾,然後進入0
文件夾。您現在應該查看網站的根目錄(即將在Web服務器上覆制到C:\inetpub\wwwroot
的文件/文件夾)。檢查bin
文件夾 - 你看到FSharp.Data
程序集嗎?如果不是,這是一個構建/包裝問題,而不是服務器問題;如果看到FSharp.Data
部件,請繼續下一步。
- 將您的項目部署到Azure,然後將遠程桌面部署到您的項目託管的實例之一。 (在實例上啓用遠程桌面有一個特殊的過程 - 如果尚未完成此操作,則需要在繼續之前完成此操作。)登錄後,您可以打開事件查看器(在管理工具);看看應用程序日誌在Windows日誌 - 那裏有任何ASP.NET錯誤?如果是這樣,請單擊它們並查看錯誤消息,它可能包含有關無法解析
FSharp.Data
程序集的.NET異常消息。如果是,請瀏覽至C:\inetpub\wwwroot\
並確保FSharp.Data
位於網站的bin
文件夾中。如果是,請繼續下一步。
如果FSharp.Data
程序集與您的Web項目一起打包和部署正確,那麼當您的項目運行在.NET上時,可能會出現與.NET 4.0程序集(或其中一個依賴項)相關的問題。 4.5。在登錄到Azure實例(通過遠程桌面)時,您可以啓用Fusion日誌記錄並使用Fusion日誌查看器來跟蹤CLR如何嘗試加載程序集。如果你確實追蹤了這個問題,解決問題的可能方法是在web.config
中創建的<dependentAssembly>
條目中添加<bindingRedirect>
元素。以下是我這樣做是爲了獲得原始的F#PowerPack中(其中有針對性的FSharp.Core
的.NET 2.0版本)在我的F#/ C#項目工作的.NET 4.0:
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
是否這篇博客的幫助? http://sireel-world.azurewebsites.net/sir-eel-visions/WATK-FS-Pt2。 F#項目模板有幾個問題會使git部署變得有點棘手。如果你仍然有問題,如果你可以在這裏創建一個問題 - https://github.com/projectkudu/kudu/issues/new,並且可能推送一個GitHub失敗的樣本庫,那將是非常棒的。 – Pranav
感謝Pranav。我會很快上傳我的項目的精選內容。你可能不會想要瀏覽項目中所有無聊的細節。 –