在我继续之前,我确实经历了这个 InternalsVisibleTo attribute ain’t workin'!
因此标题
好吧,我的项目有一个工作版本,它使用如下内容。
[assembly: InternalsVisibleTo("Stuff.Test.Support, PublicKey="0024000004800000940000000302000000240000525341310004000001000100d158cd56401c3d90b52ca1a5f273d608c3ce12aaa21385b0f4ad7dc1b747e45ee1f1771c104c52cb4da1b587ae38b6d36fa1d8e8f14003c42f700bc62ef2ec04b231c5d930e4bc3691aa1ef7b6713926316d4be1165ede086e94190b44edd4ad0d024230ae6eb9deb728b00d71d1d468b20a9bb78f242bd6c41e640c2e5c0cd5")]
在包含我想要访问的内部内容的 Properties/AssemblyInfo.cs 文件中。
在检查它之前它正在工作。但在 Team Foundation IDK WTF 上如此合并之后,WTF 是错误的,但它就像我的 AssemblyInfo.cs 没有看到该属性,但我验证文件中没有任何更改,但我仍然得到 “innaccessable due to its protection level.”
错误。 (Gama 辐射?太阳黑子?训练 bug 将工作代码改造成不工作代码的小邪恶侏儒哈哈)
我试过使用反射添加单个实例...
Assembly Core = Assembly.LoadFile("C:\Stuff.Internal.Core\bin\Debug\Stuff.Internal.Core.dll");
Object AssmWithIdentifier = Core.CreateInstance("AssemblyWithIdentifer", false);
当我尝试这样做时,我得到 'Stuff.Internal.AssemblyWithIdentifer' is unaccessible due to protection level.
否则,如果我注释掉任何与我的项目编译的内部内容有关的内容。
我用 Red Gates Reflector 仔细检查了我的“公钥”
我也尝试过使用 privateObjects 以这种方式访问方法,但无论我如何尝试,我都无法实例化任何内部内容。
我也试过简单地添加一个新项目,编译它的任何引用,是的,确实有效,但在那之后我尝试创建一个新项目并添加“Stuff.Test.Support”项目中的所有内容以包括引用和之类的,并将其添加到我希望访问的项目中的 AssemblyInfo.cs 中,但是,一旦我尝试编译,我就会遇到同样的错误 "innaccessable due to its protection level."
编辑:
我确实忘记提到我正在使用全局管理程序集的 sharedAssembly.cs,并以与示例 assembly: InternalsVisibleTo
属性类似的方式设置了几个属性,我在这个问题的开头显示了.
如果我的示例没有突出显示,我也会使用强命名程序集。
最佳答案
原来是工作流定义导致了差异。仍在尝试找出原因......
好吧,如果有人可以提供指向解释为什么会从我这里得到 +1 的链接。
关于c# - InternalsVisibleTo 属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504257/