C# 使内部类对其他程序集可见

C# 使内部类对其他程序集可见,c#,linqpad,internals,C#,Linqpad,Internals,是否可以使我的程序集中的内部类对其他程序集可见 我知道AssemblyInfo文件和[assembly:InternalsVisibleTo()]属性,但它在我的情况下不起作用 主要目的是使从LINQPAD调用方法成为可能,因此此[程序集:InternalsVisibleTo(“LINQPAD”)]不起作用。我不知道为什么。在我的项目中,我使用依赖项解析器,在LINQPAD中很难做到这一点。有什么建议吗?我刚刚上传了一篇文章,可以让这篇文章发挥作用 向希望LINQPad访问其内部构件的库添加以下

是否可以使我的程序集中的内部类对其他程序集可见

我知道AssemblyInfo文件和
[assembly:InternalsVisibleTo()]
属性,但它在我的情况下不起作用

主要目的是使从LINQPAD调用方法成为可能,因此此
[程序集:InternalsVisibleTo(“LINQPAD”)]
不起作用。我不知道为什么。在我的项目中,我使用依赖项解析器,在LINQPAD中很难做到这一点。有什么建议吗?

我刚刚上传了一篇文章,可以让这篇文章发挥作用

向希望LINQPad访问其内部构件的库添加以下属性:

[assembly: InternalsVisibleTo("LINQPadQuery")]
您还需要在LINQPad的首选项(编辑|首选项|高级)中启用此功能


请告诉我您的进展情况。

您也可以转到AssemblyInfo.cs文件中的项目属性并将其设置在那里

例如:

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("*****)]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("*****")]
[assembly: AssemblyProduct("*****")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: InternalsVisibleTo("[HERE IS YOUR ASSEMBLY WHERE YOU WANT TO SEE INTERNALS OF CURRENT ASSEMBLY")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6fbd2c14-031d-48cc-9cc6-f1b85d701e89")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

我强烈怀疑LINQPad正在动态生成程序集-可能不是LINQPad程序集本身需要访问您的类型。@Jon Skeet Autocomplete也不起作用。我猜它是LINQPAD assembly.Autocomplete几乎肯定是基于反射的——我完全希望它只过滤到公共属性。毕竟,LINQPad程序集本身不包含对您的代码的直接调用,是吗?@Jon Skeet您是对的……好的,解决方案是什么?听起来您应该联系Joe Albahari,提出功能请求……对我有用。有时我不得不恢复到反射来访问内部方法,所以这将是一个方便的功能,所以谢谢。关于访问级别的警告对我来说也不存在了,但现在我得到了这样的信息:
不一致的可访问性:基类“Database.Model.CustomDataContext”的可访问性不如类“UserQuery”
。你知道我怎样才能避开这件事吗?CustomDataContext的签名是
内部部分类CustomDataContext:DbContext
我尝试了v4.46.11版本,它可以工作!!非常感谢:)我正在搜索visual studio-不过这个答案对我很有用。签名程序集呢?有没有可能?我发现这比公认的答案更有帮助,因为它说明了将这些信息放在何处:AssemblyInfo.cs