错误8类型“ReactiveUI.ReactiveObject”在程序集中定义 没有引用。您必须添加对程序集的引用 'ReactiveUI,Version = 6.0.3.0,Culture = neutral, 公钥=空”。 D:\ git \ ProjectName \ ViewModels \ AboutViewModel.cs 15 25 JIMS
过去几个小时我很难解决这个问题。我已将Caliburn.Micro
替换为Caliburn.Micro.ReactiveUI
。我使用nuget引用了这个dll,最初有一个签名问题,但是通过修改我的MSBuild脚本来签署这个程序集来解决这个问题。
现在我收到此错误,即使我已将引用添加到此程序集中。我已经看过其他问题,但没有任何帮助。
到目前为止尝试过的事情
- 使用Nuget和dep卸载了Caliburn.Micro.ReactiveUI包 重新安装。
- 清理解决方案并重建。
- 将构建从Debug更改为Release,没有任何效果。
醇>
更新
进一步深入研究这个问题,这是我注意到的。 我使用
取消了所有软件包的安装PM> Uninstall-Package Caliburn.Micro.ReactiveUI -RemoveDependencies
然后我重新安装,现在我使用dotPeek检查了ReactiveUI.dll,这就是它的内容
ReactiveUI, Version=6.0.3.0, Culture=neutral, PublicKeyToken=null
并且程序集尚未签名并且StrongName=False
现在,当我构建项目时,它将作为MSBuild脚本
<Target Name="SignAssembly" Outputs="%(Reference.HintPath)" BeforeTargets="BeforeBuild">
<ConvertToAbsolutePath Paths="%(Reference.HintPath)">
<Output TaskParameter="AbsolutePaths" PropertyName="AssemblyPath" />
</ConvertToAbsolutePath>
<Message Text="Assembly Path: $(AssemblyPath)" />
<Exec Command=""$(SignerPath)\$(Signer)" -a "$(AssemblyPath)" > "$(OutputLogFile)"" IgnoreExitCode="true" />
<ReadLinesFromFile File="$(OutputLogFile)">
<Output TaskParameter="Lines" ItemName="OutputLogFile" />
</ReadLinesFromFile>
<Message Text="@(OutputLogFile->'%(Identity)', '%0a%0d')" />
<Delete Files="$(OutputLogFile)" />
</Target>
请注意,创建日志文件和删除仅用于调试。 现在我再次检查了dotPeek中的汇编信息,这是签署dll后显示的内容
ReactiveUI, Version=6.0.3.0, Culture=neutral, PublicKeyToken=831a72fa0d8caa87
现在我对错误发生了一些了解,所以一旦签署了程序集,它就是MSBuild的另一个程序集。
那么如何在Visual Studio中更新对新签名dll的引用
答案 0 :(得分:0)
您是否为ReactiveUI和Caliburn.Micro添加了软件包?从您所说的内容来看,您只添加了Caliburn.Micro.ReactiveUI,它只引用了两个框架的核心库。