C# 内部可视属性isn';行不通
在我继续之前,我确实经历了这些 因此得名 好的,我有一个我的项目的工作版本,它使用了如下的东西C# 内部可视属性isn';行不通,c#,visual-studio-2010,reflection,assemblies,internalsvisibleto,C#,Visual Studio 2010,Reflection,Assemblies,Internalsvisibleto,在我继续之前,我确实经历了这些 因此得名 好的,我有一个我的项目的工作版本,它使用了如下的东西 [assembly: InternalsVisibleTo("Stuff.Test.Support, PublicKey="0024000004800000940000000302000000240000525341310004000001000100d158cd56401c3d90b52ca1a5f273d608c3ce12aaa21385b0f4ad7dc1b747e45ee
[assembly: InternalsVisibleTo("Stuff.Test.Support, PublicKey="0024000004800000940000000302000000240000525341310004000001000100d158cd56401c3d90b52ca1a5f273d608c3ce12aaa21385b0f4ad7dc1b747e45ee1f1771c104c52cb4da1b587ae38b6d36fa1d8e8f14003c42f700bc62ef2ec04b231c5d930e4bc3691aa1ef7b6713926316d4be1165ede086e94190b44edd4ad0d024230ae6eb9deb728b00d71d1d468b20a9bb78f242bd6c41e640c2e5c0cd5")]
在Properties/AssemblyInfo.cs文件中包含我要访问的内部内容。
在登记之前,它正在工作。但是在合并了Team Foundation之后,IDKWTF是错误的,但是它就像我的AsdioCyfO.C.没有看到属性,但是我验证了文件中没有什么改变,但是我仍然得到了<代码>“由于它的保护级别而不能访问。”错误。(伽马辐射?太阳黑子?小邪恶侏儒,训练虫子将工作代码转换成不工作代码lol)
我已经尝试使用反射添加单个实例
Assembly Core = Assembly.LoadFile("C:\Stuff.Internal.Core\bin\Debug\Stuff.Internal.Core.dll");
Object AssmWithIdentifier = Core.CreateInstance("AssemblyWithIdentifer", false);
当我尝试此操作时,由于保护级别的原因,“Stuff.Internal.AssemblyWithIdentifer”无法访问。
否则,如果我注释掉与我的项目编译的内部内容有关的任何内容,我的项目就可以了
我用红门反射器仔细检查了我的“公钥”
我也尝试过使用privateObjects以这种方式访问方法,但无论我如何尝试,我都无法实例化任何内部内容
我也尝试过简单地添加一个新项目,编译它,任何引用,是的,确实有效,但之后我尝试创建一个新项目,并在“stuff.Test.Support”项目中添加所有内容,以包括引用等,并将其添加到我希望访问的项目中的AssemblyInfo.cs,但是,一旦我尝试编译,我会得到相同的错误“由于其保护级别,无法访问。”
编辑:
我忘了提到我正在使用一个sharedAssembly.cs,它全局管理程序集,并以类似于我在本问题开头展示的示例assembly:InternalsVisibleTo
属性的方式设置了多个属性。
如果我的示例没有突出显示强名称程序集,我也会使用它。1)如果InternalsVisibleTo设置正确,您不需要从“friend”实例化它们,它可以直接使用ctor等。我会走这条路线,这样VSIDE就可以更快地反馈目标项目是否真正可以看到内部构件
2) 根据您稍后收到的错误消息,您是否尝试了InternalsVisibleTo(“Stuff.Test.Support”)?结果是工作流定义造成了差异。但仍在试图找出原因
如果有人能提供一个链接,解释为什么我会得到+1 1)我尝试使用反射作为使用InternalsVisibleTo的替代方法,因为它目前不起作用。我目前正在修补反射,看看是否有什么我错过了。2) 我当前正在使用强名称程序集,因此我得到的错误是Friend程序集引用“Stuff.Tests.Support”无效。强名称签名的程序集必须在其InternalsVisibleTo声明中指定公钥。很抱歉,我刚刚修改了我的问题,以透露有关我的设置的更多信息。所以,也许这可以帮助你更好。嘿,也许你应该删除该项目中的任何工作流定义!试试看,天哪,这很有效。也许你应该把它作为一个答案,这样你就可以真正得到一些信任。我删除了项目中所有的工作流定义。不是最好的答案,但它现在起作用了。目前有一个错误报告给微软。链接是