【发布时间】:2011-03-31 01:48:39
【问题描述】:
在我继续之前,我确实经历了这个 InternalsVisibleTo attribute ain’t workin'!
因此标题
好的,所以我的项目的工作版本正在使用类似以下内容。
[assembly: InternalsVisibleTo("Stuff.Test.Support, PublicKey="0024000004800000940000000302000000240000525341310004000001000100d158cd56401c3d90b52ca1a5f273d608c3ce12aaa21385b0f4ad7dc1b747e45ee1f1771c104c52cb4da1b587ae38b6d36fa1d8e8f14003c42f700bc62ef2ec04b231c5d930e4bc3691aa1ef7b6713926316d4be1165ede086e94190b44edd4ad0d024230ae6eb9deb728b00d71d1d468b20a9bb78f242bd6c41e640c2e5c0cd5")]
在 Properties/AssemblyInfo.cs 文件中,其中包含我要访问的内部内容。
在检查它之前它正在工作。但是在 Team Foundation IDK WTF 如此合并之后是错误的,但它就像我的 AssemblyInfo.cs 没有看到该属性,但我验证文件中没有任何更改,但我仍然收到 "innaccessable due to its protection level." 错误。 (伽马辐射?太阳黑子?那些训练 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 inaccessible due to protection level.
否则,如果我注释掉与我的项目编译的内部内容有关的任何内容。
我用 Red Gates Reflector 仔细检查了我的“PublicKey”
我也尝试过使用 privateObjects 以这种方式访问方法,但无论我如何尝试,我都无法实例化内部的任何东西。
我也尝试过简单地添加一个新项目,编译它任何引用,是的,确实有效,但之后我尝试创建一个新项目并在“Stuff.Test.Support”项目中添加所有内容以包含引用和类似并将其添加到我希望访问的项目中的 AssemblyInfo.cs 中,但是,一旦我尝试编译,我就会得到相同的错误 "innaccessable due to its protection level."
编辑:
我确实忘了提到我正在使用一个 sharedAssembly.cs 来全局管理程序集,并且有几个属性设置方式与我在这个问题开头显示的示例 assembly: InternalsVisibleTo 属性类似。
如果我的示例没有突出显示,我也会使用强命名程序集。
【问题讨论】:
-
嘿,也许您应该从该项目中删除所有工作流定义!试试看。
-
天哪,可行。也许你应该把它写下来作为答案,这样你才能真正获得一些信任。
标签: c# visual-studio-2010 reflection assemblies internalsvisibleto