我正在VS2015为我工作的公司开展一个小项目,作为公司政策,我们生产的所有组件都必须签名。
当我向包含无符号程序集的nuget包添加依赖项时,我发现了一些奇怪的行为。使用vs2015构建项目时,我收到警告:
CSC:警告CS8002:引用程序集' XXX,版本= A.B.C.D,Culture = neutral,PublicKeyToken = null'没有一个强大的名字。
当我第一次看到它时,这似乎很奇怪,因为我记得它在VS2013或更早版本中没有编译。事实上,在vs2013中构建相同项目时出现以下错误:
CSC:错误CS1577:程序集生成失败 - 引用程序集' XXX'没有一个强大的名字。
我认为可能在运行时发生了变化,现在支持了。我不能再错了。运行我在VS2015中使用警告构建的代码时,我现在遇到运行时错误。我得到的确切例外是带有消息的holy@my-VirtualBox:/var/www/example$ git branch -av
* master 6b49b28 Theme Update
remotes/origin/BL_CustomGrid 8827318 upgraded to BL_CustomGrid
holy@my-VirtualBox:/var/www/example$ git push origin --delete BL_CustomGrid
To staging-box:/var/git/example.git
- [deleted] BL_CustomGrid
holy@my-VirtualBox:/var/www/example$ git branch -av
* master 1f3bb6c Theme Update
remotes/origin/HEAD -> origin/master
remotes/origin/master 1f3bb6c Theme Update
holy@my-VirtualBox:/var/www/example$ ssh staging-box
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-48-generic x86_64)
* Documentation: https://help.ubuntu.com/
[ommiting login messages]
Last login: Tue Nov 17 14:12:36 2015 from 54.??.??.???
STAGING-box@ip-170-??-??-???:~$ cd /var/www/staging-example/
STAGING-box@ip-170-??-??-???:/var/www/staging-example$ git pull
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 10 (delta 7), reused 0 (delta 0)
Unpacking objects: 100% (10/10), done.
From /var/git/example
6b49b28..1f3bb6c master -> origin/master
Updating 6b49b28..1f3bb6c
Fast-forward
skin/frontend/example/default/css/custom.css | 76 +++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
skin/frontend/example/default/sass/_checkout.scss | 9 +++++++++
2 files changed, 56 insertions(+), 29 deletions(-)
STAGING-box@ip-170-??-??-???:/var/www/staging-example$ git branch -av
* master 6b49b28 Theme Update
remotes/origin/BL_CustomGrid 8827318 upgraded to BL_CustomGrid
STAGING-box@ip-170-??-??-???:/var/www/staging-example$ git push origin --delete BL_CustomGrid
error: unable to delete 'BL_CustomGrid': remote ref does not exist
error: failed to push some refs to '/var/git/example.git'
STAGING-box@ip-170-??-??-???:/var/www/staging-example$
无法加载文件或程序集' XXX,Version = A.B.C.D,Culture = neutral,PublicKeyToken = null'或其中一个依赖项。需要一个强名称的程序集。 (HRESULT异常:0x80131044)
我知道有一些nuget软件包会在构建之前签署任何未签名的依赖项(例如this one,this other或this last one)。
我的问题是:有没有办法引用已签名的未签名的程序集可以工作,我错过了什么?如果没有,为什么现在这是一个编译器警告,如果它以后会发出运行时错误?
提前致谢
答案 0 :(得分:3)
在某些平台(如CoreCLR)上引用签名的无符号程序集是正常的。编译器不知道您要运行哪个平台,因此它不再报告错误。我们仍会报告警告,因为您可能会遇到问题,就像在桌面CLR上一样。