我在这个板上看到了几个类似的问题,但我认为有几个问题可能会导致这个信息,而我的特定问题可能不在其中,当然我的解决方案看起来比其他任何问题都简单和有效。
我有一个使用packages. config的项目。
我使用Visual Studio UI将项目引用从package.config迁移到PackageReference(https://devblogs.microsoft.com/nuget/migrate-packages-config-to-package-reference/)。我这样做是因为它允许使用msbuild /t:restore mysln.sln进行构建-这不适用于packages. config。
我认为这通常是有效的(我在其他项目上尝试了5或6次)。但是在一个项目上,当我重建时,我得到了错误消息:
c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VisualStudio\v16.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(236,9): error MSB3188: Assembly 'C:\Users\lew
is\.nuget\packages\mousekeyhook\5.6.0\lib\net40\Gma.System.MouseKeyHook.dll' must be strong signed in order to be marked as a prerequisite.
4条答案
按热度按时间q3qa4bjr1#
有关要求的已签名程序集的错误消息通常以下列组合形式显示:
您可以通过创建一个新的VSTO Word外接程序并通过NuGet引用NGenerics Version 1.5.3来轻松地重现此问题。
(另一个原因可能是被引用程序集的版本冲突,比如您通过NuGet引用程序集A和B,而A本身引用了B的不同版本;则必须引用与A相同的B版本。)
在Microsoft服务调用的帮助下,我们发现在这样的场景中,引用的程序集(在我们的例子中是NGenerics v. 1.5.3)被构建过程内部标记为
CopyLocal=false
。如果您使用packages.config而不是PackageReferences for NuGet,并在“属性”窗口中将引用的程序集标记为CopyLocal=false
,则会出现相同的编译错误。解决方案:使用packages.config时,请将受影响组件的组件指涉属性设定为
CopyLocal=true
。使用PackageReferences时,请手动编辑项目档,并加入assets选项,如下列范例所示:ExcludeAssets
和IncludeAssets
设置的名称容易引起误解。ExcludeAssets
将提到的项目复制到输出,而IncludeAssets
阻止它们进入输出目录。您也可以说<IncludeAssets>none</IncludeAssets>
。请参阅https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files处的文档fquxozlt2#
我对这个问题的解决办法是:
完成-错误已消失。
显然,有一个需要签名的东西,但有一个经常不。
hfsqlsce3#
我保留我的另一个答案,因为它可能有助于其他项目。然而,对于VSTO,情况是根据我们提出的微软支持案例:
您可以通过投票支持以下内容来鼓励对PackageReferences的支持:VSTO projects created in Visual Studio 2019 do not support Package Reference as the package management format
643ylb084#
在我的例子中,我将项目升级到.net 4.7.2,但仍然在旧的VS版本(2015)中构建。当我在VS 2019中构建项目时,构建失败消失了