我试图重新配置一个CLR存储过程,曾经是一个大型数据库项目到一个核心逻辑项目和数据库项目来分离我的顾虑。因此,项目的架构,像这样:创建程序集失败,因为方法不可见 - 但一切都公开
\src
\Company.Core
\CoreCode.cs
\CoreCode2.cs
\Company.Database
\Programmability\Stored Procedures
CmsSelectQueryStoredProcedure.cs
ClrStoredProcedure2.cs
当我尝试部署项目,我收到了一系列错误消息:
CREATE ASSEMBLY for assembly 'MyAssembly' failed because assembly "MyAssembly" failed
verification. Check it the referenced assemblies are up-to-date and trusted (for
external_access or unsafe) to execute in the database. CLR verifier error messages if any
will follow this message.
MyAssembly.Programmability.Stored_Procedures.CmsSelectQueryStoredProcedure::.ctor Method is
not visible.
MyAssembly.Programmability.Stored_Procedures.CmsSelectQueryStoredProcedure::
.ExecuteCmsSelectQuery Method is not visible.
(Many more of these)
的ClrStoredProcedure1.cs包含此代码:
using System;
using System.Data.SqlClient;
using System.Security;
using Company.Core;
using Microsoft.SqlServer.Server;
[assembly: AllowPartiallyTrustedCallers(PartialTrustVisibilityLevel = PartialTrustVisibilityLevel.VisibleToAllHosts)]
namespace KK.Corporate.ServerGroupQuery.Database.Programmability.Stored_Procedures
{
public class CmsSelectQueryStoredProcedure
{
public static CmsDataService _cmsDataService;
public CmsSelectQueryStoredProcedure()
{
_cmsDataService = new CmsDataService();
}
const string InitialCatalog = "master";
const int ConnectTimeout = 10;
[SqlProcedure]
public static void ExecuteCmsSelectQuery(string targetGroup, string query, string targetGroupUserName, string targetGroupPassword)
{/*etc*/}
}
}
这些方法是公开的,我使用一个程序集属性使它们更加可见。有什么我失踪?
啊构造函数 - 菜鸟错误!我仍然想知道为什么我会收到所有这些“方法不可见”消息。 –
还不确定,因为迄今为止,一切都很顺利。这就是为什么我提到命名空间,只是因为没有明显的跳出来。 –
我会先解决构造函数问题并重新编译。如果您仍然遇到错误,也许尝试使用更简单的命名空间名称,或者根本没有? –