Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 依赖的依赖性;.net Core 3.0中的框架4.6.2依赖项_C#_Asp.net Core_.net Core_Dependencies - Fatal编程技术网

C# 依赖的依赖性;.net Core 3.0中的框架4.6.2依赖项

C# 依赖的依赖性;.net Core 3.0中的框架4.6.2依赖项,c#,asp.net-core,.net-core,dependencies,C#,Asp.net Core,.net Core,Dependencies,我有一个针对.Net Framework 4.6.2(x86)的第三方库。我在一台x64 Windows机器上,安装了x86 sdk。我需要弄清楚是否/如何在我的aspnetcore3.0项目中使用此库。有人能在考虑以下因素的情况下阐明一种方法吗 我已将外部库作为参考和HintPath包含在我的csproj文件中,用于Asp.Net Core 3.0项目。我目前以依赖于框架的部署(FDD)的形式发布 这个库的某些元素似乎工作得很好,而其他方法则会出错。据我所知,库的Initialize方法使用S

我有一个针对.Net Framework 4.6.2(x86)的第三方库。我在一台x64 Windows机器上,安装了x86 sdk。我需要弄清楚是否/如何在我的aspnetcore3.0项目中使用此库。有人能在考虑以下因素的情况下阐明一种方法吗

我已将外部库作为
参考
HintPath
包含在我的csproj文件中,用于Asp.Net Core 3.0项目。我目前以依赖于框架的部署(FDD)的形式发布

这个库的某些元素似乎工作得很好,而其他方法则会出错。据我所知,库的
Initialize
方法使用
System.Data.SqlClient
连接到MSSQL源。我已经包含了在托管的
BackgroundService
中调用此函数的逻辑,该服务将添加到
ConfigureServices
中。当代码到达这一点时,会出现以下错误:

The ConnectionString property has not been initialized
   at System.Data.SqlClient.SqlConnection.PermissionDemand()
   at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(String connectionString, CommandType commandType, String commandText, SqlParameter[] commandParameters)
   at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(String connectionString, CommandType commandType, String commandText)
   at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(String connectionString, String spName, Object[] parameterValues)
... (proprietary library methods call to database)
此库的一个限制是调用的可执行文件需要从特定的“特殊”目录运行(按照
Path.GetDirectoryName(Assembly.getExecutionGassembly().Location)
)。我们称之为C:\MySpecialProgram\CustomApiCode。这是一个静态定义的位置,我还没有确定解决它的方法。此文件夹包含DLL和其他几个相关DLL。我以前曾尝试将其作为一个独立的可执行文件发布,但可能是由于与如何卸载此“包”有关的原因,库报告它不是从特殊目录运行的

我已尝试从VS2019命令行发布,指定x86 dotnet.exe而不是。它们似乎都会产生略有不同的错误(可能是出于明显的原因)

除了上面的ConnectionString错误之外,我经常得到:
无法加载文件或程序集{在这里插入一些系统库}。定位的程序集的清单定义与程序集引用不匹配。
起初,它调用了System.Data.SqlClient,因此我通过NuGet添加了它来尝试缓解它。现在它似乎被
System.Text.Encoding.CodePages阻塞了,Version=4.1.2.0
/感觉有点像怪胎,表明我的方法是all错误。

.NET核心(任何版本)技术上不支持.NET Framework库。由于.NET Core 2.0+实现了.NET标准2.0和.NET Framework 4.6.1+实现了.NET标准2.0,Microsoft在编译器中破例允许包含.NET Framework库,并警告它们可能有效,也可能无效。您应该收到警告在引用库时对此进行修改

大多数.NET Framework功能实际上都在.NET Core中受支持,但很多东西都不受支持,特别是Windows特定的API。如果该库最终无法工作(因为它使用了.NET Core不支持的API),则没有解决方法。您根本无法使用该库。就这么简单

这只是增加了一个方便,因为有大量的.NET Framework库,其中许多库不再处于积极开发中,但实际上与Core配合使用会很好。对于最终的支持,无论是明示的还是其他的,都没有任何保证


也就是说,ASP.NET Core的早期版本作为旁白,我很好奇这个库做什么,如果有更现代的版本和/或更新的库来做同样的事情。根据您描述的需要特定路径等问题,这听起来像是我想要消除的垃圾。如果只是…这是一个供应商为cri提供的API在我们的企业中,这是一个必要的邪恶,我一直在使用它。在这一点上,没有更好的选择。我能做的最好是完全避开它,直接访问数据库。出于明显和不明显的原因,这是不可行的。我刚刚经历了数周混合使用.NET Core和完整的.NET Framework的糟糕事件DLL在同一个项目中,考虑在一个单独的进程中,在一个WebAPI的后面托管完整的.NETFramework代码,使用适当的防火墙保护,使完整的.NETFramework代码可以运行在一个完整的.NET框架过程中。我们放弃并在不同的EXE进程中运行它们。我只是想SqlClient不会太难兼容。我试着从2.1开始瞄准462(我已经在3.0之前的2.1上构建了它)没有乐趣。我放弃了。我将构建一个单独的.net framework组件,它将使用Signal与asp.net核心服务器进行通信。下一个障碍是让.net framework Signal客户端与该.net核心Signal服务器进行通信。我知道它们不一定兼容……但我听说Microsoft.AspNetCore.Signal.client将如果我将TransportType指定为WebSockets,则为我工作。