1

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

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

我还使用 InternalsVisibleTo 属性为单元测试程序集提供对所有其他程序集的内部成员的访问。如果您在签名程序集上使用 InternalsVisibleTo 属性,则也应该对将访问内部的程序集进行签名。

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

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

所以我不能在我的项目中使用 Machine.Fakes。

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

4

2 回答 2

1

我看到三个选项:

  • 正如您所提到的,创建一个未签名版本的程序集来运行测试。
  • 正如 nikita 所提到的,请按照在 已签名程序中使用未签名程序集中的描述手动对 Machine.Fakes 程序集进行签名。
  • 或者您提取Machine.Fakes的源代码并自己编译和签署程序集。

Machine.Fakes 没有签名版本,因为到目前为止没有人需要它。我已经看到了您提交的问题,但我还没有时间查看它。所以还有另一种选择:等我创建一个签名版本。:-) 但是,我还不确定是否以及如何做到这一点。

于 2013-08-23T07:14:52.767 回答
1

当您使用签名版本时,您还需要签名的 ReSharper 运行器。并且两个版本都需要匹配。

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

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

于 2013-08-23T23:40:52.527 回答