2017-08-21 33 views
-1

我通過從.NET Framework 4.6.2從CodeProject下載的Windows應用程序轉換代碼來創建類庫。類庫(DLL)具有.NETStandard 1.6的目標框架。System.IO StreamWriter類在Windows應用程序和類Libarary應用程序之間不同

我遇到了System.IO StreamWriter類在兩個應用程序之間不一致的問題。下圖顯示了DLL項目中的fileName和outputFile.Close()的紅線錯誤。同樣的錯誤不會在Windows應用程序:

fileName is of type String and outputFile is of type StreamWriter

發生使用Visual Studio的後「轉到Definiton」選項,我發現,在System.IO爲Windows應用程序的StreamWriter的版本,同時具備1)一個接受字符串參數的構造函數,以及2)Close()方法。 DLL的StreamWriter版本中缺少這兩個功能。

所以我的問題是「我可以以某種方式」修復「我的DLL項目屬性,以便它可以使用C#代碼而不用更改,或者我必須修改代碼?」。

+0

我不同意這個問題是一個現有問題的確切副本。我的問題是關於修復屬性或修復代碼。在做了更多的研究和測試後,我發現我可能爲我的DLL應用程序選擇了錯誤的目標框架。如果我選擇了.NET Framework 4.6.2而不是.NETStandard 1.6,那麼移植後的代碼會起作用。名爲「Vnext Argument 1:無法從'字符串'轉換爲'System.IO.Stream'」的帖子是關於「框架中缺少的東西」。我可能只是完全選擇了錯誤的框架。更多的測試會告訴你。 –

+0

所以,的確,問題是我的類庫項目選擇的框架。通過將其更改爲.NET Framework 4.6.2,我無需修改即可從Windows應用程序移植代碼。我仍然不同意這篇文章是重複的。 –

回答

0

你必須修改你的代碼。 System.IO.StreamWriter.ctor(string)System.IO.StreamWriter.Close()不是.NET Standard 1.6 API的一部分。

+0

或者選擇一個不同的框架,我想。 –

+0

更改框架解決了問題。看到我上面的評論。 –

相關問題