簡體   English   中英

在Visual Studio 2015中構建SQL CLR項目

[英]Building SQL CLR project in Visual Studio 2015

我正在嘗試在Visual Studio 2015中構建SQL CLR項目,並且正在調用針對System.Runtime.Serialization.dll的wcf服務。 為了解決此問題,我在確定要定位的正確版本的.NET時遇到問題。

sql版本是:

name        value
directory   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version     v4.0.30319
state       CLR is initialized

我試圖針對.NET版本4建立CLR。

SQL拒絕安裝System.Runtime.Serialization.dll如果我針對.NET 3.5版進行構建,則會得到

無法安裝消息6586,級別16,狀態1,第8行,程序集“ System.Runtime.Serialization”,因為現有策略將使其無法使用。

我應該針對哪個版本克服該問題?

SQL Server 2012及更高版本使用CLR 4.0,而后者又與.NET Framework 4.0及更高版本綁定。 您不能在SQL Server 2012或更高版本中使用任何.NET 2.0、3.0或3.5庫。

System.Runtime.Serialization不在“ 受支持的.NET Framework庫”列表中,因此您需要以UNSAFE手動加載。 但是,如果該DLL是混合模式而不是純MSIL,則它將不會加載,因為SQL Server的CLR主機只能與純MSIL庫一起使用。 我發現最好只使用HttpWebRequest並手動構建請求XML並手動解析響應XML。

過去, ServiceModel DLL是純MSIL的,並且在SQL Server 2008 R2中使用(SQL Server 2005、2008和2008 R2與CLR 2.0綁定在一起),但是隨后Microsoft將該DLL更改為CLR 4.0中的混合模式,如果在升級到SQL Server 2012或更高版本后停止工作,則在2008 R2中運行了可運行的WebService SQLCLR。 使用HttpWebRequest可以與“批准的”庫一起使用,該庫可以確保始終在.NET Framework的所有升級中都可以使用。

關於這些問題,這里已經有許多問題。 我將嘗試找到一些並用其中一些進行更新。

同樣,只是FYI,問題中顯示的輸出似乎是執行的結果: SELECT * FROM sys.dm_clr_properties; 請注意,顯示的“版本”雖然通常稱為Framework版本,但實際上只是CLR版本,而這兩件事不是同一件事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM