次のコマンドを使用したカスタム msbuild タスクがあります。
var workspace = Workspace.LoadStandAloneProject(csprojPath);
実行すると、次のエラーがスローされます。
System.InvalidCastException がユーザー コードによって処理されませんでした
Message='Roslyn.Utilities.SerializableDataStorage' 型に透過プロキシをキャストできません。
ソース=Roslyn.Services
スタックトレース:
Roslyn.Utilities.RemoteServices.CreateInstance[T]() で
Roslyn.Services.Host.TemporaryStorageServiceFactory.CreateService (IWorkspaceServiceProvider ワークスペース サービス) で
Roslyn.Services.Host.WorkspaceServiceProviderFactory.Provider.c__DisplayClass7.b__4() で
Roslyn.Utilities.NonReentrantLazy`1.get_Value() で
Roslyn.Services.Host.WorkspaceServiceProviderFactory.Provider.GetService[TWorkspaceService]() で
Roslyn.Services.SolutionServices..ctor (IWorkspaceServiceProvider ワークスペース サービス、ILanguageServiceProviderFactory 言語サービス ファクトリー) で
Roslyn.Services.Solution..ctor (SolutionId id、文字列 filePath、VersionStamp バージョン、VersionStamp latestProjectVersion、ILanguageServiceProviderFactory languageServiceProviderFactory、IWorkspaceServiceProvider ワークスペースサービス) で
Roslyn.Services.Host.SolutionFactoryServiceFactory.SolutionFactoryService.CreateSolution (SolutionId id) で
Roslyn.Services.Host.TrackingWorkspace.CreateNewSolution (ISolutionFactoryService solutionFactory、SolutionId id) で
Roslyn.Services.Host.TrackingWorkspace..ctor (IWorkspaceServiceProvider ワークスペースServiceProvider、ブール値の enableBackgroundCompilation、ブール値の enableInProgressSolutions) で
Roslyn.Services.Host.HostWorkspace..ctor (IWorkspaceServiceProvider ワークスペースServiceProvider、ブール型の enableBackgroundCompilation、ブール型の enableInProgressSolutions、ブール型の enableFileTracking) で
Roslyn.Services.Host.LoadedWorkspace..ctor (ILanguageServiceProviderFactory languageServiceProviderFactory、IWorkspaceServiceProvider ワークスペースServiceProvider、IProjectFileService projectFileFactsService、IDictionary`2 globalProperties、ブール値の enableBackgroundCompilation、ブール値の enableFileTracking) で
Roslyn.Services.Host.LoadedWorkspace..ctor (ExportProvider exportProvider、ブール値の solutionLoadOnly、ブール値の enableFileTracking) で
Roslyn.Services.Host.LoadedWorkspace..ctor (ブール値の enableFileTracking) で
Roslyn.Services.Host.LoadedWorkspace.LoadStandAloneProject (文字列の projectFileName、文字列の構成、文字列のプラットフォーム、文字列の言語、ブール値の enableFileTracking) で
Roslyn.Services.Workspace.LoadStandAloneProject (文字列の projectFileName、文字列の構成、文字列のプラットフォーム、文字列の言語、ブール値の enableFileTracking) で
...
コンソール アプリケーションで同じプロジェクトを使用して同じコードを実行すると、正常に動作します。
何か案は?グーグルは役に立ちませんでした!