C# Microsoft Fakes框架-我可以';不要使用内部类

C# Microsoft Fakes框架-我可以';不要使用内部类,c#,unit-testing,.net-assembly,microsoft-fakes,C#,Unit Testing,.net Assembly,Microsoft Fakes,Fakes框架和内部类存在问题。 我刚刚阅读并使用了以下建议: 但是,我仍然没有看到内部类 我有一个解决方案: ACQTool(类库项目) ACQTool.UnitTests(测试项目) 在ACQTool命名空间中,存在ACQTool.Utils内部类 在ACQTool/AssemblyInfo.cs中,我添加了以下行: [assembly: InternalsVisibleTo("ACQTool.UnitTests, PublicKey=57ad8399-13fd-4d4d-90fd-c521

Fakes框架和内部类存在问题。 我刚刚阅读并使用了以下建议:

但是,我仍然没有看到内部类

我有一个解决方案: ACQTool(类库项目) ACQTool.UnitTests(测试项目)

在ACQTool命名空间中,存在ACQTool.Utils内部类

在ACQTool/AssemblyInfo.cs中,我添加了以下行:

[assembly: InternalsVisibleTo("ACQTool.UnitTests, PublicKey=57ad8399-13fd-4d4d-90fd-c521c2164d25")]
[assembly: InternalsVisibleTo("ACQTool.Fakes, PublicKey=0024..47bc")]
[assembly: InternalsVisibleTo("Microsoft.QualityTools.Testing.Fakes, PublicKey=0024..47bc")]
构建之后,我可以在测试类中使用ACQTool.Utils,但不存在ACQTool.Fakes.ShimUtils/StubUtils。
请帮帮我。

您可能应该粘贴sn.exe工具生成的公钥。 通常存储在以下位置:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\sn.exe"
从命令行调用它:

sn.exe -p SomeName.snk SomeName.PublicKey
sn.exe -tp SomeName.PublicKey
并将输出粘贴到“InternalsVisibleTo”公钥参数

我错过了msdn页面中的一个重要注意事项:Fakes框架使用相同的密钥对所有生成的程序集进行签名,因此签名时的公钥应始终为
PublicKey=00240004800009400006020000000240000525341310004000001000100E92DE‌​cb949446f688ab9f6973436c535bf50acd1fd580495aae3f875aa4e4f663ca77908c63b7f0996977c‌​b98fcfdb35e05aa2c842002703cad835473caac5ef14107e3a7fae01120a96558785f48319f66daab‌​c862872b2c53f5ac11fa335c0165e202b4c011334c7bc8f4c4e570cf255190f4e3e2cbc9137ca57cb‌​687947bc

有点奇怪,我刚刚复制了你的问题,而且一开始它肯定不是在假汇编中生成内部构件。我遵循以下步骤,它甚至开始在其他名称空间中工作:

  • 在命名空间
    Utils
    下添加公共类
  • 重新生成测试项目,内部文件将开始显示
  • 删除该公共类并重新生成
我删除了
Utils
名称空间中的所有内容,并添加了新的内部类,从那时起它就可以正常工作了。
这只是生成包含内部内容的命名空间的一种变通方法。

您是否有
0024..47bc
或有效的公钥?是的,我使用了MSDN页面上的snipped,我也尝试了我的plublickey,但没有解决方案我遵循了此过程,但结果没有改变我的命名空间是“ACQTool”。我有一个“Utils.cs”类,包含:内部类Utils、公共枚举logsevery、公共类DisabledEvents、公共静态类ExExtensions。除了乌提尔,我能看到所有的卡塞