Microsoft.SqlServer.Types'在Visual Studio online上找不到10或更高版本

时间:2017-07-24 11:13:28

标签: c# visual-studio

我在几个问题上看到了这个问题,当你在本地建立时,所有的解决方案都可以正常工作。我目前在visualstudio.com上有我的代码,每当我从我的机器上推送代码时,我都会自动构建。

我知道你必须安装一个nuget包(我有)并从以下链接安装类型:

http://go.microsoft.com/fwlink/?LinkID=239644&clcid=0x409

问题是,我不知道如何从我的浏览器安装它,因为它在云端构建。

我错过了什么吗?

4 个答案:

答案 0 :(得分:4)

毕竟我在网上发现的tipps对我来说没有用,我想记录下对我有用的解决方案:

我安装了Nuget Package并在app / web.config中创建了以下重定向:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
  </dependentAssembly>
</assemblyBinding>    

我在这里找到了必要的信息: https://github.com/aspnet/EntityFramework6/issues/244

答案 1 :(得分:2)

我在微软的支持下解决了这个问题。

实际上非常简单,我已将以下代码行添加到Context对象的构造函数中:

SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";

这来自stackoverflow答案,但我丢失了链接。如果有人知道它来自哪里,请随意评论该链接,或标记为重复。

答案 2 :(得分:0)

Visual Studio Onlines TFS Build Server不允许您在其上安装任何内容。你必须使用NuGet包。

将SQL CLR Types依赖项作为NuGet包添加到您的解决方案中。

enter image description here

这样构建服务器将在构建之前恢复NuGet包:

enter image description here

如果不起作用,请尝试 Microsoft.SqlServer.Types.Unoffical 包。

我认为你应该提出这个问题作为微软的支持案例。

答案 3 :(得分:0)

我发现这是On-Premises TFS和VSTS的问题。

一般来说,它在VS中看起来像这样:

Folder tree of visual studio

即使它在本地bin目录中创建了文件夹,它也不在构建服务器上。

要做的第一件事是确保将.dll文件设置为内​​容并包含在源代码管理中(默认情况下它们通常被排除)。这应该意味着它们进入输出目录。因为有32位和64位dll具有相同的名称,您不能依赖于哪个版本使其成为实际的bin文件夹,您必须保持相同的文件夹结构。

检查构建输出目录后,可以使用正确的相对路径调用SqlServerTypes.Utilities.LoadNativeAssemblies()

在一个实例中,我在一个不是已发布项目(一个数据访问项目)的项目中引用它们,我能让它工作的唯一方法是将NuGet包添加到顶级发布的Web项目中。