收到错误:无法修改源自导入文件的已评估对象



我们使用 Roslyn 代码在asp.net core mvc项目中自动生成一些.cs文件

,使用Visual Studio 2017 15.4

在最近对分支进行了一些更改后,我收到此错误

类型:系统。无效操作异常消息:无法修改 源自导入文件"C:\Program "的已评估对象 Files\dotnet\sdk\2.0.3\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.props". 堆栈:在 Microsoft.Build.Shared.ErrorUtilities.ThrowInvalidOperation(StringresourceName, Object[] args) at Microsoft.Build.Shared.ErrorUtilities.VerifyThrowInvalidOperation(Boolean 条件, 字符串资源名称, 对象 arg0) at Microsoft.Build.Evaluation.Project.VerifyThrowInvalidOperationNotImported(ProjectRootElement otherXml) at Microsoft.Build.Evaluation.Project.RemoveItemHelper(ProjectItem item) at Microsoft.Build.Evaluation.Project.RemoveItem(ProjectItem item)
at Microsoft.CodeAnalysis.MSBuild.ProjectFile.RemoveDocument(String 文件路径)

在 Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.ApplyDocumentRemoved(DocumentId documentId) at Microsoft.CodeAnalysis.Workspace.ApplyProjectChanges(ProjectChanges 项目更改) 在 Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.ApplyProjectChanges(ProjectChanges 项目更改) 在 Microsoft.CodeAnalysis.Workspace.TryApplyChanges(Solution newSolution, IProgressTracker progressTracker) at Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.TryApplyChanges(Solution newSolution, IProgressTracker progressTracker)

try
{
var solutionPath = dataAccessGeneratorConfig.Solution;
using (var workspace = MSBuildWorkspace.Create())
{
var solution = workspace.OpenSolutionAsync(solutionPath).Result;
foreach (var dataAccessSource in dataAccessGeneratorConfig.DataSources)
{
// Add/remove documents to the project
}
workspace.TryApplyChanges(solution);
workspace.CloseSolution();
}       
catch (Exception ex)
{
// Exception Handling
}

我已经咨询了其他此类线程和 github 页面,但它没有帮助。有什么线索吗?

看来我正在跨过自己。几天前我发布了另一个问题,这个问题的根本原因是我在那里建议的解决方案。

对于这个问题,一旦我把这一行放在 .csproj 文件中

<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>

一切都开始按预期工作。

如果我只有上面的行,类型系统似乎不知道项目中的类。马特·沃德(Matt Ward)在这个线程上给出了一个很好的解释。

因此,正确的解决方案是拥有这两行。

<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>

相关内容

  • 没有找到相关文章

最新更新