VS2017 ASP.NET Core 發佈與執行問題兩則

栏目: ASP.NET · 发布时间: 6年前

内容简介:前幾天研究過使用 VS2017 修改專案屬性升級到 2.2,並微調 NuGet 參照版本,網站很順利升級,執行結果看起也都正常。

前幾天研究過 ASP.NET Core 2.0 升級 2.2 ,今天手癢把部落格也從 ASP.NET Core 2.1 升到 2.2,遇到兩起小問題,學到一點新經驗,記錄如下:

VS2017 建置與執行無誤,但發佈(Publish)出錯

使用 VS2017 修改專案屬性升級到 2.2,並微調 NuGet 參照版本,網站很順利升級,執行結果看起也都正常。

VS2017 ASP.NET Core 發佈與執行問題兩則

但發佈出現以下錯誤:

C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.app\2.2.0\build\netcoreapp2.2\Microsoft.AspNetCore.App.targets(14,5): Error : This version of Microsoft.AspNetCore.App is only compatible with the netcoreapp2.2 target framework. Please target netcoreapp2.2 or choose a version of Microsoft.AspNetCore.App compatible with netcoreapp2.1.

研究後發覺是個笨問題,VS2017 發佈設定位於 \Properties\PublishProfiles\XXX.pubxml,使用 IDE 變更 .NET Core 版本時不會連帶更新,但只要開啟以下設定畫面,.pubxml 裡的 TargetFramework 即會與 .csproj 同步。

VS2017 ASP.NET Core 發佈與執行問題兩則

另外發現新版 VS2017 .pubxml 已不再需要標註 TargetFramework 即可運作,故可選擇手動將版本設定移除,或是砍掉 .pubxml 重新設定即可套用新規格。

ASP.NET Core 在 IISExpress 與 Kestrel 的執行結果可能不同

使用 VS2017 升級並測試 OK 後,開開心心將檔案部署到 Docker 卻晴天霹靂 - 網站開不起來! 由 Docker Log 得到以下訊息:

darkblog    | fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
darkblog    |       An unhandled exception has occurred while executing the request.
darkblog    | System.TypeLoadException: Could not load type 'Microsoft.AspNetCore.Mvc.TagHelpers.Internal.FileVersionProvider' from assembly 'Microsoft.AspNetCore.Mvc.TagHelpers, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
darkblog    |    at WebOptimizer.Asset.GenerateCacheKey(HttpContext context)
darkblog    |    at WebOptimizer.Taghelpers.BaseTagHelper.GenerateHash(IAsset asset)
darkblog    |    at WebOptimizer.Taghelpers.LinkTagHelper.Process(TagHelperContext context, TagHelperOutput output)
darkblog    |    at Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)
darkblog    |    at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.RunAsync(TagHelperExecutionContext executionContext)

原以為跟 Docker 環境有關,測試比對確認這個錯誤用 Kestrel 執行才會發生,用 IIS Express 執行時正常。Kestrel 與 IISExress 的環境差異會影響到 Razor.TagHelpers 層次有些出乎我的意料。

VS2017 ASP.NET Core 發佈與執行問題兩則

推測錯誤源自相關程式庫版本過舊,與 .NET Core 2.2 不相容,由 WebOptimizer 關鍵字很快找到嫌犯 - LigerShark.WebOptimizer.Core ,而問題也在將 WebOptimizer.Core.dll 由 1.0.215 升級至 1.0.236 後排除。

由此再學到經驗一則:

ASP.NET Core 以 IISExpress/IIS 或 Kestrel 執行的結果可能不同,需個別測試

順便一提,部落格目前已換版升到 ASP.NET Core 2.2,大家如發現隱藏 Bug 請再回報給我,感謝!

ASP.NET Core 2.2 upgrade notes: if build and run OK but publish failed, check the .pubxml. Running at IISExpress or Kestrel may get different results.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网络、群体与市场

网络、群体与市场

大卫·伊斯利(David Esley)、乔恩·克莱因伯格(Jon Kleinberg) / 李晓明、王卫红、杨韫利 / 清华大学出版社 / 2011-10-1 / CNY 69.00

过去十年来,现代社会中复杂的连通性向公众展现出与日俱增的魅力。这种连通性在许多方面都有体现并发挥着强大的作用,包括互联网的快速成长、全球通信的便捷,以及新闻与信息(及传染病与金融危机)以惊人的速度与强度传播的能力。这种现象涉及网络、动机和人们的聚合行为。网络将人们的行为联系起来,使得每个人的决定可能对他人产生微妙的后果。 本书是本科生的入门教材,同时也适合希望进入相关领域的高层次读者。它从交......一起来看看 《网络、群体与市场》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器