2024年5月23日 星期四

[研究]編譯器錯誤訊息: CS0012: 類型 'System.Object' 是定義在未參考的組件中

[研究]編譯器錯誤訊息: CS0012: 類型 'System.Object' 是定義在未參考的組件中

2024-05-23

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

********************************************************************************

'/' 應用程式中發生伺服器錯誤。

編譯錯誤

描述: 資源編譯無法完成 (錯誤發生於服務要求)。請檢閱下列的特定錯誤詳細資料,並視情況修改您的原始程式碼。

編譯器錯誤訊息: CS0012: 類型 'System.Object' 是定義在未參考的組件中。您必須加入參考至組件 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'。

顯示詳細的編譯器輸出資料:

版本資訊: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.8.4700.0

********************************************************************************

解決:

其實 Visual Studio 2019 編譯時並沒有發生錯誤,是執行時錯誤。

最後檢查發現是 Button 的 OnClick 執行的 Method 剛剛砍掉了,修正後就解決了。

********************************************************************************

ChatGPT

編譯器錯誤訊息 CS0012 提示你在使用的類型 System.Object 是在一個未被引用的組件中定義的。具體來說,它要求你加入 netstandard 庫的引用。這通常發生在你嘗試在專案中使用 .NET Standard 類型或函數,但沒有正確引用相關的 netstandard 組件時。

解決方法

1.檢查專案的目標框架:

確保你的專案目標框架是支援 .NET Standard 的。WebForm 專案通常會目標 .NET Framework。如果你的專案目標是較早版本的 .NET Framework,則可能需要升級目標框架。

2.加入 netstandard 組件的引用:

如果你的專案確實需要引用 netstandard,你可以手動添加它。步驟如下:

右鍵點擊專案,選擇 "Manage NuGet Packages"。

在 "Browse" 標籤下,搜尋 NETStandard.Library。

安裝這個 NuGet 包。

3.檢查組件的相容性:

確保你所引用的其他第三方組件也與你的目標框架相容。有時候,一些第三方庫可能需要 .NET Standard 的支持。


示例步驟

1.升級目標框架(如果需要):

右鍵點擊你的專案,選擇 "Properties"。

在 "Application" 標籤下,查看目標框架。考慮將其升級到 .NET Framework 4.7.2 或更高版本,這些版本更好地支持 .NET Standard。

2.加入 NETStandard.Library:

打開 NuGet 包管理器,點擊 "Manage NuGet Packages"。

在 "Browse" 標籤下,搜尋 NETStandard.Library。

點擊 "Install"。


範例錯誤修正

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework> <!-- 目標框架 -->
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="NETStandard.Library" Version="2.0.0" />
  </ItemGroup>
</Project>

這樣可以解決你目前遇到的 CS0012 錯誤。


如果你依然遇到問題,請提供更多上下文訊息,比如你的專案文件(.csproj)的內容或是你正在使用的代碼片段。這樣可以更好地幫助你診斷問題。

********************************************************************************

Copilot

這個錯誤訊息是由於您的專案缺少對 netstandard 組件的參考所導致的。讓我為您解釋一下:

CS0012 錯誤:這是一個編譯時期的錯誤,表示某個類型在未被參考的組件中定義。在您的情況下,這是 System.Object 類型。

解決方法:您需要將 netstandard 組件添加到您的專案中。這個組件通常位於 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades 資料夾中。您可以在專案中的參考中新增對 System.Runtime 的參考,版本為 4.0.0.0,文化特性為 中性,PublicKeyToken 為 b03f5f7f11d50a3a12。

https://support.microsoft.com/zh-tw/topic/%E7%95%B6%E6%82%A8%E7%B7%A8%E8%AD%AF%E8%87%B3-net-framework-4-5-2-%E7%82%BA%E7%9B%AE%E6%A8%99%E7%9A%84%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E6%99%82-%E5%87%BA%E7%8F%BE%E9%8C%AF%E8%AA%A4%E8%A8%8A%E6%81%AF-534770fe-8640-5a53-897a-e5efb7711a45

https://blog.csdn.net/sinat_40003796/article/details/127734950

(完)

相關

沒有留言:

張貼留言