.net 为什么机器规范建议使用未签名的二进制文件?

.net 为什么机器规范建议使用未签名的二进制文件?,.net,unit-testing,mspec,machine.fakes,.net,Unit Testing,Mspec,Machine.fakes,在github页面上,我可以下载已签名和未签名的二进制文件,建议使用未签名的二进制文件 在我的.net项目中,所有程序集都应该由密钥签名。这是外部要求 此外,我还使用InternalsVisibleTo属性为单元测试程序集提供对所有其他程序集的内部成员的访问。 若您对已签名的程序集使用InternalsVisibleTo属性,那个么将访问内部的程序集也应该被签名 所以我的单元测试程序集应该被签名。 这意味着我不能使用任何单元测试框架的未签名版本 我在Nuget上找到了Machine.Specif

在github页面上,我可以下载已签名和未签名的二进制文件,建议使用未签名的二进制文件

在我的.net项目中,所有程序集都应该由密钥签名。这是外部要求

此外,我还使用InternalsVisibleTo属性为单元测试程序集提供对所有其他程序集的内部成员的访问。 若您对已签名的程序集使用InternalsVisibleTo属性,那个么将访问内部的程序集也应该被签名

所以我的单元测试程序集应该被签名。 这意味着我不能使用任何单元测试框架的未签名版本

我在Nuget上找到了Machine.Specifications的签名版本,但我也想使用Machine.Fakes作为自动模拟容器,但找不到Machine.Fakes的签名版本

所以我不能在我的项目中使用机器

我只是不明白,在我的情况下,我怎么能遵循“推荐方式”? 可能我应该添加主程序集的条件编译—单元测试的未签名版本和发布的已签名版本?

我看到三个选项:

  • 如前所述,创建程序集的未签名版本以在其上运行测试
  • 如nikita所述,在机器上签名。如中所述,手动伪造装配
  • 或者您自己提取程序集的源代码并编译和签名程序集

没有签名版本的机器。赝品,因为到目前为止还没有人需要它。我已经看过了,但还没有时间看一看。所以还有另一个选项:等待我创建签名版本。:-)但是,我还不确定我是否会这样做以及如何做。

当您使用签名版本时,还需要签名的ReSharper runner。两个版本都需要匹配

对于未签名的版本,只要内部API兼容,就可以在ReSharper和您的项目中使用另一个版本


在我看来,前者更麻烦(保持两个版本同步),因此建议使用前者。这也是我用来测试和自己工作的东西

?很了解你。我假设只为单元测试创建一组无符号程序集。这将解决问题。