.net MSBuild 15.0:警告MSB3245:未能重新解析此引用。需要一个文件,但得到了目录"\“银行标识代码”;
我正在尝试将Visual Studio 2015解决方案迁移到VS 2017(15.4.1)。尽管这些项目是从VisualStudio中编译的,但如果我尝试使用MSBuild v15从命令行生成各个项目,则对于引用解决方案中不同项目的任何项目,编译都会失败 MSBuild输出以下警告,我认为这表明找不到引用的项目: c:\program files(x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1988,5):警告MSB3245:无法解析此引用。需要一个文件,但得到目录“D:\TestSolution\ClassLibrary2\bin”。如果代码需要此引用,则可能会出现编译错误。[D:\TestSolution\ClassLibrary2\ClassLibrary2.csproj] 我使用以下命令启动MSBuild:.net MSBuild 15.0:警告MSB3245:未能重新解析此引用。需要一个文件,但得到了目录"\“银行标识代码”;,.net,visual-studio,msbuild,visual-studio-2017,.net,Visual Studio,Msbuild,Visual Studio 2017,我正在尝试将Visual Studio 2015解决方案迁移到VS 2017(15.4.1)。尽管这些项目是从VisualStudio中编译的,但如果我尝试使用MSBuild v15从命令行生成各个项目,则对于引用解决方案中不同项目的任何项目,编译都会失败 MSBuild输出以下警告,我认为这表明找不到引用的项目: c:\program files(x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Com
"c:\program files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"
"d:\TestSolution\ClassLibrary2\ClassLibrary2.csproj"
复制步骤:
ClassLibrary1
和ClassLibrary2
ClassLibrary2
参考ClassLibrary1
,并确保代码链接到ClassLibrary1
的Class1
。通过右键单击解决方案资源管理器中项目的“依赖项”节点并从上下文菜单中选择“添加引用…”来添加引用<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
我在这里做错了什么?嘿,史蒂文,我刚在当地试过,效果很好。是否安装了最新的VS 2017和MSBuild?如何添加引用、使用解决方案表示项目之间的依赖关系或向项目添加引用?如果您在解决方案中添加引用(右键单击您的解决方案->属性->公共属性->项目依赖项),那么您将生成单个项目,您将得到该错误。顺便说一句,请尝试清理生成,然后重新生成。@Leo MSFT:我通过右键单击解决方案资源管理器中项目的“依赖项”节点并从上下文菜单中选择“添加引用…”添加了引用。清洗溶液没有什么区别。错误仍然存在。@Steven,无法重现。如何使用ClassLibrary1添加名称空间
代码>在ClassLibrary2的Class1中?@Leo MSFT:这当然不是代码问题。同一编译器的MSBuild kick。但是,我在测试项目中通过以下方式解决了这个问题:1。从项目中删除/bin和/obj文件夹,2。在VS中打开解决方案(可能进行了包还原,并重新创建了bin和obj文件夹),3。关闭解决方案,4。运行MSBuild命令。这解决了测试项目中的问题,但不幸的是,实际项目中没有。我甚至尝试了dotnet restore
,但问题仍然存在于实际项目中。现在的问题是,我不能在测试项目中重现那个精确的问题
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" />
</ItemGroup>
</Project>
using System;
namespace ClassLibrary2
{
public class Class1
{
private readonly ClassLibrary1.Class1 instance = new ClassLibrary1.Class1();
public string Test() => instance.ToString();
}
}