簡體   English   中英

為什么我的 ASP.NET 網站項目在我告訴它面向 4.8 時面向 .NET Framework 4.6.1?

[英]Why is my ASP.NET Web Site project targeting .NET Framework 4.6.1 when I have told it to target 4.8?

我們有一個大型 Visual Studio 2015 解決方案,其中包含多個網站(而不是Web 應用程序)項目和數十個業務邏輯 DLL 項目。 我們的目標是 .NET Framework 4.6.1,但我現在已經在本地 PC 上安裝了 Visual Studio 2019 並將所有項目重新定位到 4.8

當我使用我們現有的 PowerShell/MSBuild 腳本構建解決方案時,所有 DLL 都成功構建,但在我們的第一個網站項目中出現以下錯誤:

C:\\[omitted]_MyWebSite.metaproj:警告 MSB3274:無法解析主要引用“C:\\[omitted]\\MyDLL.dll”,因為它是針對“.NETFramework,Version=v4.8”框架構建的。 這是比當前目標框架“.NETFramework,Version=v4.6.1”更高的版本。

然后,當編譯器在站點上找到一些嘗試使用 DLL 的代碼時:

c:\\[omitted]MyController.cs(6): 錯誤 CS0246:找不到類型或命名空間名稱“MyDLL”(您是否缺少 using 指令或程序集引用?)[C:\\[omitted]_MyWebSite。元項目]

(這只是一個示例引用錯誤。事實上,所有 DLL 似乎在網站項目中使用的任何地方都存在此問題。)

站點的 web.config 文件中的相關行:

  <location path="." inheritInChildApplications="false">
    <system.web>
    [omitted]
      <httpRuntime targetFramework="4.8" requestValidationMode="2.0" maxRequestLength="10240" />
      <compilation debug="true" strict="false" explicit="true" targetFramework="4.8">

我正在使用以下 MSBuild.exe 路徑:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\msbuild.exe -maxcpucount:1 -verbosity:detailed

看起來更新網站項目的 web.config 文件是不夠的。 您還必須更新屬性頁中的目標。 因此,在解決方案資源管理器中,找到您的網站項目,右鍵單擊 > 屬性頁 > 構建 > 目標框架 > 更改為 .NET Framework 4.8。

這與 web.config 文件無關,並導致我的 .sln 文件發生了以下變化:

ProjectSection(WebsiteProperties) = preProject
[...omitted...]
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.6.1"

到:

ProjectSection(WebsiteProperties) = preProject
[...omitted...]
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.8"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM