在我继续之前,我确实通过了这个InternalsVisibleTo attribute ain’t workin'!
因此,标题
好的,我有一个工作版本的我的项目,它使用的东西如下所示。
[assembly: InternalsVisibleTo("Stuff.Test.Support, PublicKey="0024000004800000940000000302000000240000525341310004000001000100d158cd56401c3d90b52ca1a5f273d608c3ce12aaa21385b0f4ad7dc1b747e45ee1f1771c104c52cb4da1b587ae38b6d36fa1d8e8f14003c42f700bc62ef2ec04b231c5d930e4bc3691aa1ef7b6713926316d4be1165ede086e94190b44edd4ad0d024230ae6eb9deb728b00d71d1d468b20a9bb78f242bd6c41e640c2e5c0cd5")]在Properties/AssemblyInfo.cs文件中,包含我想要访问的内部内容。在检查之前它还在起作用。但是在上合并之后是错误的,但是就像我的AssemblyInfo.cs没有看到属性一样,但是我验证了文件中没有什么变化,但是我仍然得到了"innaccessable due to its protection level."错误。(伽马辐射?太阳黑子?把错误训练成每周工作代码变成不工作代码的小邪恶侏儒)
我尝试过使用反射来添加各个实例..。
Assembly Core = Assembly.LoadFile("C:\Stuff.Internal.Core\bin\Debug\Stuff.Internal.Core.dll");
Object AssmWithIdentifier = Core.CreateInstance("AssemblyWithIdentifer", false);当我尝试这样做时,我得到了'Stuff.Internal.AssemblyWithIdentifer' is inaccessible due to protection level.
否则,如果我注释掉与内部内容有关的任何事情,我的项目就会编译得很好。
我用红门反光镜检查了我的"PublicKey“
我也尝试过使用privateObjects来以这种方式访问方法,但是无论我如何尝试,我都不能实例化任何内部的方法。
我还尝试简单地添加一个新项目,编译它的任何引用,是的,但在此之后,我尝试创建一个新项目,并将"Stuff.Test.Support“项目中的所有内容添加到包含引用之类的内容中,并将其添加到我希望访问的项目中的AssemblyInfo.cs中,但一旦我试图编译,就会得到相同的错误"innaccessable due to its protection level."。
编辑:我确实忘了提到我使用的是一个全局管理程序集的sharedAssembly.cs,它的几个属性的设置方式类似于我在这个问题开始时展示的示例assembly: InternalsVisibleTo属性。我也使用强命名程序集,如果这不是我的例子突出的东西。
发布于 2010-08-18 17:04:22
事实证明,工作流定义是造成的。还在努力弄清楚为什么.
好吧,如果有人能提供一个链接,解释为什么会从我这里得到+1。
发布于 2010-08-17 16:32:48
1)如果InternalsVisibleTo设置正确,您不应该需要反射来从“朋友”中实例化它们,它可以直接使用ctor等。我会这样做,这样visible就可以更快地反馈目标项目是否可以看到内部部件。
2)根据稍后收到的错误消息,您是否尝试过InternalsVisibleTo("Stuff.Test.Support")?
https://stackoverflow.com/questions/3504257
复制相似问题