【发布时间】:2017-08-22 07:20:07
【问题描述】:
我正在通过转换从 CodeProject 下载的 .NET Framework 4.6.2 Windows 应用程序中的代码来创建类库。类库 (DLL) 具有 .NETStandard 1.6 的目标框架。
我遇到了 System.IO StreamWriter 类在两个应用程序之间不一致的问题。下图显示了 DLL 项目中 fileName 和 outputFile.Close() 的红线错误。 Windows 应用程序中不会出现相同的错误。:
fileName is of type String and outputFile is of type StreamWriter
在使用 Visual Studio 的“Go To Definiton”选项后,我发现 System.IO 中的 StreamWriter 版本适用于 Windows 应用程序,具有 1) 一个接受字符串参数的构造函数,以及 2) 一个 Close() 方法. DLL 的 StreamWriter 版本中缺少这两个功能。
所以我的问题是“我能否以某种方式“修复”我的 DLL 项目属性,以便它可以使用 C# 代码而无需更改,还是我必须修改代码?”。
【问题讨论】:
-
我不同意这个问题与现有问题完全相同。我的问题是关于修复属性或修复代码。经过更多的研究和测试,我发现我可能为我的 DLL 应用程序选择了错误的目标框架。如果我选择 .NET Framework 4.6.2 而不是 .NETStandard 1.6,那么移植的代码就会起作用。名为“Vnext Argument 1: cannot convert from 'string' to 'System.IO.Stream'”的帖子是关于“框架中缺少东西”。我可能只是完全选择了错误的框架。更多的测试会告诉我们。
-
所以,确实,问题出在为我的类库项目选择的框架上。通过将其更改为 .NET Framework 4.6.2,我无需修改即可从 Windows 应用程序移植代码。我仍然不同意这篇文章是重复的。
标签: c# dll streamwriter