罗斯林 MSBuild 工作区添加了额外的尾部斜杠?



所以我的设置是:

Microsoft.代码分析,v. 2.7.0 .... Microsoft.构建,v. 15.6.85

这是一个网络应用程序。

我有以下代码:

var msWorkspace = MSBuildWorkspace.Create();
var solution = msWorkspace.OpenSolutionAsync(filePath).Result;

基本上,我想加载一个本地(服务器本地(解决方案并对其进行一些分析。

但是,加载它似乎会导致问题,例如:

Msbuild 在处理文件"C:\Projects\Project.csproj"时失败,并显示以下消息:

无法从程序集实例化"RazorCodeGen"任务 "C:\Projects\packages\RazorGenerator.MsBuild.2.4.1\build\\..\tools\RazorGenerator.MsBuild.dll"。 请验证任务程序集是否已使用相同的版本构建 的 Microsoft.Build.Framework 程序集作为安装在您的 计算机,并且您的主机应用程序未缺少绑定 重定向到 Microsoft.Build.Framework。无法强制转换类型的对象 "RazorGenerator.MsBuild.RazorCodeGen"键入 'Microsoft.Build.Framework.ITask'.

请注意,错误消息中的路径包含: 建\\。。\工具。

看起来路径中有一个\\。

  1. 删除额外的尾部斜杠允许我打开任务(所以它 确实存在并且存在(。

  2. 使用 Visual Studio 2017 社区打开和构建解决方案 版本作品。

  3. 使用 MSBuild(v. 15.0(生成解决方案也可以。

我已经将绑定重定向从 MSBuild.exe.config 添加到我的应用程序 Web.Config。

更新:

刚刚写了几行代码,尝试使用 Microsoft.Build.Execution.BuildManager 构建解决方案并遇到相同的错误。因此,问题似乎出在MSBuild而不是Roslyn/MSBuildWorkspace上。

Roslyn MSBuild 工作区添加了额外的尾部斜杠?

在检查了项目RazorGenerator.MsBuild中使用的Microsoft.Build.Framework程序集后,会发现它是针对旧版本的MSBuild 4.0编译的。 当应用程序无法处理多个不同的ITask定义(来自 Microsoft.Build 的新定义,v. 15.6.85(时,会出现此错误。

若要解决此问题,可以尝试默认引用 v4.0Microsoft.Build.Framework或添加绑定重定向:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build.Framework" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Build" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

查看此线程以获取更多详细信息。

从目录访问时:
\local-pcBasesSystem under developmentERP- 不起作用。

但是当我放置项目并浏览目录时:
D:BasesSystem under DevelopmentERPSystem- 作品

我的D:映射到local-pc

这意味着RazorCodeGen正在寻找一个位置,并且该项目已被另一个位置打开。

最新更新