微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 从unsigned项目引用的程序集需要强名称吗?

我正在开发 WCF服务. WCF服务接口和实现位于不同的项目中.还有一个Windows服务项目来托管WCF服务.

WCF服务实现需要做的一件事就是调用几个外部(SOAP)Web服务.我们通常构建它的方式是为SOAP服务创建一个单独的类库项目;我们将在类库中创建Web引用和工厂/帮助器方法.

以上细节可能与实际问题相关或不相关.这是我在构建WCF服务实现项目时遇到错误(其中X是SOAP服务包装程序集之一):

referenced assembly ‘X’ does not have a strong name

但是WCF服务实现项目没有设置为签名(接口项目也不是).在这一点上,引用它的唯一两件事是Windows服务项目和单元测试项目 – 这两者都没有签名.

WCF实现还引用了其他(预先存在的)Web服务包装器项目,但它只是抱怨这两个.我已经在文本编辑器中并排了一个现有的和一个新的项目文件……我可以看到任何重大的差异.

我还检查了是否有任何项目正在导入需要签名的设置,如Stack Overflow问题Remove signing from an assembly中所述.但似乎并非如此.

我试图使用AutoMapper – 1.1因为我们仍然在.NET 3.5上 – 在我的WCF实现中.这是一个签名的程序集,所以我可以看到它可能在我的代码和SOAP服务包装器上出现问题.但在我看来,这将是一个运行时问题,而不是构建时间.但是因为我怀疑它可能至少是一个促成因素,我删除了AutoMapper和相关代码,但我仍然得到相同的错误.

我已经研究过这个问题,大多数搜索结果都包含有关如何签名(可能是第三方)程序集的说明.

我已经尝试删除并重新添加引用,重新启动Visual Studio和我的PC.

Windows 7 64位上的Visual Studio 2010 / .NET 3.5.

我敢肯定我错过了一些相当明显的东西……我只是想不出来.

解决方法

嗯……这很尴尬.

我怀疑,这很简单.事实上,服务接口和实现已经签署;我对此不正确.但是,这不是在项目设置/文件中完成的,而是在AssemblyInfo.cs文件中通过指令完成的
[assembly:AssemblyKeyFile(“keyfile.snk”)].

我不熟悉这种签名方法.我收集它自VS2005以来已被弃用 – 部分原因是通过项目属性管理签名更为直接,部分原因是将此信息放入AssemblyInfo被认为是安全风险.

事实上我至少看过一个AssemblyInfo文件……但显然我没有向下滚动得足够远. (我说这很尴尬.)

希望其他人可以从中受益.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐