我有一个使用此命令的自定义msbuild任务:
var workspace = Workspace.LoadStandAloneProject(csprojPath);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会抛出以下错误:
System.InvalidCastException was unhandled by user code Message=Unable to cast transparent proxy to type 'Roslyn.Utilities.SerializableDataStorage'. Source=Roslyn.Services StackTrace: at Roslyn.Utilities.RemoteServices.CreateInstance[T]() at Roslyn.Services.Host.TemporaryStorageServiceFactory.CreateService(IWorkspaceServiceProvider workspaceServices) at Roslyn.Services.Host.WorkspaceServiceProviderFactory.Provider.c__DisplayClass7.b__4() at Roslyn.Utilities.NonReentrantLazy`1.get_Value() at Roslyn.Services.Host.WorkspaceServiceProviderFactory.Provider.GetService[TWorkspaceService]() at Roslyn.Services.SolutionServices..ctor(IWorkspaceServiceProvider workspaceServices, ILanguageServiceProviderFactory languageServicesFactory) at Roslyn.Services.Solution..ctor(SolutionId id, String filePath, VersionStamp version, VersionStamp latestProjectVersion, ILanguageServiceProviderFactory languageServiceProviderFactory, IWorkspaceServiceProvider workspaceServices) at Roslyn.Services.Host.SolutionFactoryServiceFactory.SolutionFactoryService.CreateSolution(SolutionId id) at Roslyn.Services.Host.TrackingWorkspace.CreateNewSolution(ISolutionFactoryService solutionFactory, SolutionId id) at Roslyn.Services.Host.TrackingWorkspace..ctor(IWorkspaceServiceProvider workspaceServiceProvider, Boolean enableBackgroundCompilation, Boolean enableInProgressSolutions) at Roslyn.Services.Host.HostWorkspace..ctor(IWorkspaceServiceProvider workspaceServiceProvider, Boolean enableBackgroundCompilation, Boolean enableInProgressSolutions, Boolean enableFileTracking) at Roslyn.Services.Host.LoadedWorkspace..ctor(ILanguageServiceProviderFactory languageServiceProviderFactory, IWorkspaceServiceProvider workspaceServiceProvider, IProjectFileService projectFileFactsService, IDictionary`2 globalProperties, Boolean enableBackgroundCompilation, Boolean enableFileTracking) at Roslyn.Services.Host.LoadedWorkspace..ctor(ExportProvider exportProvider, Boolean solutionLoadOnly, Boolean enableFileTracking) at Roslyn.Services.Host.LoadedWorkspace..ctor(Boolean enableFileTracking) at Roslyn.Services.Host.LoadedWorkspace.LoadStandAloneProject(String projectFileName, String configuration, String platform, String language, Boolean enableFileTracking) at Roslyn.Services.Workspace.LoadStandAloneProject(String projectFileName, String configuration, String platform, String language, Boolean enableFileTracking) ...
使用相同项目在控制台应用程序中运行时,相同的代码运行正常.
有任何想法吗?谷歌搜索没有帮助!
Kev*_*lch -1
这是 MSBuild 的限制。Roslyn 无法在构建期间递归调用 MSBuild 来确定项目属性/文件/引用。为了IProject
在构建任务期间创建 Roslyn,请尝试使用LoadFromCommandLineArgs()
方法。您需要构建任务以采用与 CscTask 最终传递给编译器相同的参数。
希望这可以帮助!
归档时间: |
|
查看次数: |
2288 次 |
最近记录: |