我有一个C#项目和一个带有主项目单元测试的测试项目.我想要有可测试的internal
方法,我想测试它们没有你可以使用Visual Studio测试项目的神奇Accessor对象.我想使用,InternalsVisibleToAttribute
但每次我都这样做,我必须回去查看如何做,我记得包括创建用于签署程序集的密钥文件,然后使用sn.exe
获取公钥等等.
是否有一个实用程序可以自动创建SNK文件,设置项目以对程序集进行签名,提取公钥以及应用InternalsVisibleTo属性?
有没有办法使用没有签名程序集的属性?
Brian Rasmus.. 37
您不必使用已签名的程序集InternalsVisibleTo
.如果不使用签名的程序集,则只需输入程序集的全名即可.
因此,如果您想要访问MyAssembly
测试程序集(MyAssembly.Test
),那么您需要AssemblyInfo.cs
的MyAssembly
是测试程序集的名称,如下所示:
[assembly: InternalsVisibleTo("CompanyName.Project.MyAssembly.Test")]
Frederik Ghe.. 13
Brian是对的,但是,在某些情况下,你有一个签名的程序集,你确实需要获得该程序集的公钥.
获得这个关键确实很麻烦.
因此,我已经这样做了:
我已经在VS.NET中定制了我的外部工具,这样我只需单击一下鼠标就可以获得当前项目程序集的公钥.
这就是它的完成方式:
在VS.NET中,打开"工具"菜单,然后单击"外部工具"
将打开一个名为"外部工具"的窗口
单击"添加"
对于标题,输入"获取公钥"
在"命令"中,输入 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe
在"参数"中,键入: -Tp $(TargetPath)
确保选中"使用输出窗口"选项
然后,构建项目,当您单击"获取公钥"时,您应该在输出窗口中看到此项目的公钥.
您不必使用已签名的程序集InternalsVisibleTo
.如果不使用签名的程序集,则只需输入程序集的全名即可.
因此,如果您想要访问MyAssembly
测试程序集(MyAssembly.Test
),那么您需要AssemblyInfo.cs
的MyAssembly
是测试程序集的名称,如下所示:
[assembly: InternalsVisibleTo("CompanyName.Project.MyAssembly.Test")]
Brian是对的,但是,在某些情况下,你有一个签名的程序集,你确实需要获得该程序集的公钥.
获得这个关键确实很麻烦.
因此,我已经这样做了:
我已经在VS.NET中定制了我的外部工具,这样我只需单击一下鼠标就可以获得当前项目程序集的公钥.
这就是它的完成方式:
在VS.NET中,打开"工具"菜单,然后单击"外部工具"
将打开一个名为"外部工具"的窗口
单击"添加"
对于标题,输入"获取公钥"
在"命令"中,输入 C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe
在"参数"中,键入: -Tp $(TargetPath)
确保选中"使用输出窗口"选项
然后,构建项目,当您单击"获取公钥"时,您应该在输出窗口中看到此项目的公钥.