Gle*_*hes 5 sqlclr .net-core visual-studio-2017
我想在 .NET Core 2.0 应用程序和 SQL Server CLR 过程之间共享库。我尝试将共享逻辑放入以下项目类型中:
.NET 标准库
.NET 标准库可以从 .NET Core 项目使用,并且我可以添加来自 SQL Server 项目的引用,但是,不能在 CLR 过程中引用类:

便携式类库
可从 CLR 过程中引用可移植类库。PCL 可以选择以 ASP.NET Core 1.0 为目标,但我无法找到以 .NET Core 2.0 为目标的方法。当我从 .NET Core 2.0 项目引用此库时,出现以下编译错误:
Project PortableLibrary1 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Project PortableLibrary1 supports: dotnet5.0 (.NETPlatform,Version=v5.0)
Run Code Online (Sandbox Code Playgroud)
是否有其他选项可以在 .NET Core 2.0 和 SQL Server CLR 之间共享库?
我遇到了类似的问题。
在一个 SQL 项目(使用 CLR C# 代码)中,我想迁移共享 .NET 标准项目内部的一些逻辑,以便能够为我的 CLR 和 .NET Core API 使用一种逻辑。
我创建了一个 .NET 标准项目(有两个目标:NET452 和 CORE1.6(对于您的案例 2.0):
<TargetFrameworks>netstandard1.6;net452</TargetFrameworks>
<NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.6' ">$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
<OutputType>Library</OutputType>
Run Code Online (Sandbox Code Playgroud)
我无法使用该项目中的 System.Data.SqlTypes,因此我创建了一个新项目 NET452 来放置 CLR 使用的特定实现。
我可以从我的 SQL 项目中引用新项目 NET452。
此时,我在将 .NET 标准项目引用到 SQL 项目时遇到问题。
右键单击包中的 .NET 标准项目,您可以从 .NET 标准库生成 nuget 包。
这个nuget包将生成一个特定的dll NET452,这个可以在SQL项目内部引用。
在数据库上的部署中,您应该手动添加程序集。
我在 DevOps 流程中所做的事情:
在从发布分支构建时,修补程序集以匹配发布号 xxx
将构建生成的 nuget 发布到内部 nuget 服务器
在发布过程中,将 nuget 包部署在 SQL Server 上的文件夹中
运行脚本来删除并创建程序集:
CREATE ASSEMBLY [Library]
FROM 'D:\Library\Nuget.Library.1.0.0\lib\net452\Library.dll'
WITH PERMISSION_SET = SAFE;
Run Code Online (Sandbox Code Playgroud)
一切对我来说都很顺利。
我的 .NET Core 库和 CLR 之间共享逻辑
nuget步骤很烦人,我在等待微软制作支持Nuget包的SQL项目https://github.com/NuGet/Home/issues/545
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |