尝试从.net核心dll创建程序集时发生SQL Server错误



我正试图从创建一个程序集。SQL Server 2017中的NET核心dll:

CREATE ASSEMBLY my_assembly 
FROM 'C:TempMyDll.dll' WITH PERMISSION_SET = SAFE;

这是dll csproj:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" Version="161.46041.41" />
</ItemGroup>   

</Project>

当我运行查询时,我得到以下错误:

程序集"MyAssembly"引用程序集"system.runtime,version=4.2.2.0,culture=neutral,publickeytoken=b03f5f7f11d50a3a.",其不存在于当前数据库中。SQL Server试图从引用程序集的同一位置定位并自动加载引用的程序集,但该操作失败(原因:2(系统找不到指定的文件(。请将引用的程序集中加载到当前数据库中,然后重试请求。

如何修复它?

基本上不要这么做。SQL CLR仅支持。NET Framework和AFAIK没有改变这一点的计划。老实说,我可能只是建议;完全避免";,只需使用您的数据库。。。存储和查询资料。但是,如果你真的想(并且你知道这会给你带来多大的痛苦(:你必须更改你的dll以针对的版本。NET Framework(不是.NET Core或.NET 5等(。一推就可以瞄准。NET Standard 2.0,并在的更高版本中使用。NET框架,但老实说:我不推荐它——大多数。NET标准支持。NET框架是围绕谎言的鸭子胶带,支撑着站在黑客身上的垫片。

最新更新