【问题标题】:Issue referencing a portable class library from a SQL Server database project从 SQL Server 数据库项目引用可移植类库的问题
【发布时间】:2014-10-08 10:40:34
【问题描述】:

我在 中创建了一个包含三个项目的测试解决方案。有一个数据库项目、一个 PCL 和一个标准类库(我们称之为 SCL)。它们都是针对 的 C# 项目。

如果我将数据库项目中的引用添加到 SCL,则所有内容都可以毫无问题地编译。如果我还添加了从数据库项目到 PCL 的引用,那么所有内容都会再次编译,而构建输出中不会出现任何警告。

但是……有这个:

我注意到 PCL 上的那个小警告标志。不幸的是,这就是我所拥有的。没有构建问题,构建输出中没有任何线索,如果我将符号悬停,则没有工具提示......什么都没有。我在网上也找不到任何关于使用(或不使用)PCL 作为 应用程序参考的信息。

有人有想法吗?从 Visual Studio 中的 SQL Server 数据库项目引用 PCL 是否有任何问题?为什么它的处理方式与 SCL 不同?

我不能做太多测试,因为现在我还没有 DB。我只是提前计划。

【问题讨论】:

  • 您不能发布到与 Visual Studio 一起安装的 SQL Server Express 的本地实例吗?即使这只是 SQL Server 2012,就您要测试的内容而言,它应该是相同的。对于许多问题,直到您在 SQL Server 中运行 CREATE ASSEMBLY 后您才真正知道,因为此时会检查几个潜在问题,并且在编译时不知道是问题。
  • @srutzky 好建议,但是 Sql Server 2012 甚至支持 .NET 4.5.1 吗?也找不到任何相关信息。
  • SQL Server 2012 链接到 4.0 系列。我自己没有尝试过,但希望从 4.0 开始的任何东西都可以工作,即使目标框架是 4.5.1。但是,如果您使用的是从 4.​​5.1 开始的功能,那么这可能不起作用,至少在不将 4.5.1 BCL 加载为 UNSAFE 的情况下不会。无论哪种情况,您都需要对其进行测试,但这应该很容易,只需使用 Visual Studio 附带的工具或下载 SQL Server Express(免费版)。
  • 我刚刚检查过,SQL Server 2012 和 2014 都链接到 .Net 4.0.30319。
  • @srutzky 我明白了...感谢您的帮助,我会尝试运行测试。

标签: visual-studio-2013 .net-4.5.1 sqlclr sql-server-2014 c# .net sql-server portable-class-library database-project


【解决方案1】:

对于发现此问题并对图标感到疑惑的其他人(就像我一样),当针对不同的 .NET 框架版本构建类型库时,会出现此黄色符号:

这通常是使用较新类库构建的数据库项目的情况,因为 Visual Studio 2013 默认创建 .NET 4.0 项目*。

要删除该符号,请确保您的数据库项目和类库使用相同的 .NET Framework 版本(例如 4.0、4.5.1 等)。

您可以通过 Properties->SQLCLR->Target Framework 设置您的数据库项目的目标框架:

据我所知,这只是一个警告标志,因为代码会按预期编译、链接和运行。

kad81's response


* - 从 SQL Server 对象资源管理器的数据库上下文菜单中使用“新建项目”时为 .NET 4.5。使用 SQL Express 2014 SP1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2018-05-30
    • 1970-01-01
    • 2010-11-15
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多