我尝试将Visual Studio 2015解决方案迁移到VS 2017(15.4.1)。虽然项目是在Visual Studio中编译的,但如果我尝试使用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:
"c:\program files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe"
"d:\TestSolution\ClassLibrary2\ClassLibrary2.csproj"
重现的步骤:
ClassLibrary1
和ClassLibrary2
创建一个新解决方案。ClassLibrary2
引用ClassLibrary1
,并确保代码链接到Class1
的{{1}}。通过右键单击' Dependencies'添加引用。解决方案资源管理器中项目的节点,然后选择"添加参考..."从上下文菜单中。除警告外,还有以下错误消息:
Class1.cs(7,26):错误CS0246:类型或命名空间名称' ClassLibrary1'找不到(你错过了使用指令或汇编引用吗?)[d :\ TestSolution \ ClassLibrary2 \ ClassLibrary2.csproj]
ClassLibrary1的项目文件:
ClassLibrary1
ClassLibrary2的项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
ClassLibrary2中的Class1:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" />
</ItemGroup>
</Project>
我在这里做错了什么?