【发布时间】:2021-05-06 17:33:02
【问题描述】:
我下载了一个Roslyn源代码,按照here的说明构建了一切
我参考了3个文件:
Microsoft.CodeAnalysis.dll
Microsoft.CodeAnalysis.Features.dll
Microsoft.CodeAnalysis.Workspaces.dll
但是当我运行以下代码时,我收到以下错误:
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
try
{
foo();
}
catch (Exception ex) // here ERROR !
{
}
}
private void foo()
{
var workspace = new AdhocWorkspace();
var proj = workspace.AddProject("abc", "c#");
}
}
System.IO.FileLoadException.Message
无法加载文件或程序集“Microsoft.CodeAnalysis.Workspaces, 版本=42.42.42.42,文化=中性,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。无法使用强名称签名 已验证。组件可能已被篡改,或者是延迟 使用正确的私钥签名但未完全签名。 (例外 来自 HRESULT:0x80131045)
System.IO.FileLoadException.FusionLog
=== Pre-bind state information ===
LOG: DisplayName = Microsoft.CodeAnalysis.Workspaces, Version=42.42.42.42, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Users/google-dev/source/repos/WordAddIn1/WordAddIn1/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : WordAddIn1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.CodeAnalysis.Workspaces, Version=42.42.42.42, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Users/google-dev/source/repos/WordAddIn1/WordAddIn1/bin/Debug/Microsoft.CodeAnalysis.Workspaces.DLL.
ERR: Failed to complete setup of assembly (hr = 0x80131045). Probing terminated.
相反,如果我通过 nuget 安装 roslyn,则不会发生错误。
如果我使用我在 WPF 项目中构建的文件,一切正常,问题仅出在 VSTO 中。
我正在使用源代码自己构建 Roslyn,因为我需要 RegexParser 并且我正在公开它。
如何创建自己的强名称密钥并使用该密钥签署 Roslyn? 这会导致什么问题?
总结一下问题是:为什么会出现错误,使用我从源代码编译的文件该怎么做。
【问题讨论】:
标签: c# .net vsto roslyn strongname