无法从程序集System.Reflection.Metadata加载类型'System.Reflection.Metadata.ISignatureTypeProvider

时间:2017-01-04 02:41:37

标签: c# .net-core roslyn roslyn-code-analysis project.json

我目前正在尝试在OSX上试用Roslyn Workspaces API,并在调用CreateRoslynWorkspace时继续遇到以下异常:

  

“无法加载类型'System.Reflection.Metadata.ISignatureTypeProvider`1'从程序集'System.Reflection.Metadata,Version = 1.4.1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。”

是否有其他人能够解释可能导致这种情况的原因?

以下是我正在使用的代码:

public static class Class1
{
    public static IEnumerable<Microsoft.CodeAnalysis.Workspace> Create(string projectPath)
    {
        var builder = new ProjectContextBuilder().WithProjectDirectory(projectPath);

        return builder.BuildAllTargets().Select(context => context.CreateRoslynWorkspace());
    }

    public static void GetProject()
    {
        // Entry point
        var path = Directory.GetCurrentDirectory() + "/src/DemoLib/project.json";
        var result = Create(path).ToList();
    }
}

这是我正在使用的project.json

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable"
  },
  "dependencies": {
    "Microsoft.CodeAnalysis.CSharp": "2.0.0-rc2",
    "Microsoft.CodeAnalysis.CSharp.Features": "2.0.0-rc2",
    "Microsoft.CodeAnalysis.CSharp.Workspaces": "2.0.0-rc2",
    "Microsoft.DotNet.ProjectModel": "1.0.0-rc3-1-003177",
    "Microsoft.DotNet.ProjectModel.Loader": "1.0.0-preview2-1-003177",
    "Microsoft.DotNet.ProjectModel.Workspaces": "1.0.0-preview2-1-003177"
  },
    "frameworks": {
      "netcoreapp1.1": {
        "imports": [ "portable-net45+win8" ]
      }
    }
}

这也是整个堆栈跟踪:

  

“在System.Reflection.RuntimeModule.GetTypes(RuntimeModule模块)\ n在System.Reflection.RuntimeAssembly.get_DefinedTypes()\ n的System.Composition.Hosting.ContainerConfiguration.b__0(程序集a)\ n在System.Linq上.Enumerable.d__159 2.MoveNext()\n at System.Composition.TypedParts.TypedPartExportDescriptorProvider..ctor(IEnumerable 1种类型,AttributedModelProvider attributeContext)\ n在System.Composition.Hosting.ContainerConfiguration.CreateContainer()\ n在Microsoft.CodeAnalysis.Host.Mef.MefHostServices.Create(IEnumerable 1 assemblies)\n at Microsoft.CodeAnalysis.Host.Mef.MefHostServices.get_DefaultHost()\n at Microsoft.DotNet.ProjectModel.Workspaces.ProjectJsonWorkspace..ctor(ProjectContext context)\n at Microsoft.DotNet.ProjectModel.Workspaces.WorkspaceProjectContextExtensions.CreateRoslynWorkspace(ProjectContext context)\n at ClassLibrary.Class1.<>c.<Create>b__0_0(ProjectContext context) in /Users/personal/Dev/RoslynWorkspace2/src/Lib/Library.cs:line 16\n at System.Linq.Enumerable.SelectEnumerableIterator 2.MoveNext()\ n在System.Collections.Generic.List 1..ctor(IEnumerable 1集合)\ n在System.Linq.Enumerable.ToList [TSource](IEnumerable`1 source)\ n在ClassLibrary.Class1.GetProject ()/Users/personal/Dev/RoslynWorkspace2/src/Lib/Library.cs:line 21 \ n,位于/ Users / personal / Dev / RoslynWorkspace2 / src / WebAPIApplication / Controllers /中的WebAPIApplication.Controllers.ValuesController.Get() ValuesController.cs:第13行\ n在lambda_method(Closure,Object,Object [])\ n在Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext()“

1 个答案:

答案 0 :(得分:0)

将“System.Reflection.Metadata”添加为project.json的依赖项。