Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内部可视属性isn';行不通_C#_Visual Studio 2010_Reflection_Assemblies_Internalsvisibleto - Fatal编程技术网

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声明中指定公钥。很抱歉,我刚刚修改了我的问题,以透露有关我的设置的更多信息。所以,也许这可以帮助你更好。嘿,也许你应该删除该项目中的任何工作流定义!试试看,天哪,这很有效。也许你应该把它作为一个答案,这样你就可以真正得到一些信任。我删除了项目中所有的工作流定义。不是最好的答案,但它现在起作用了。目前有一个错误报告给微软。链接是