C# 错误MSB4019:导入的项目“0”;C:\Program Files\dotnet\sdk\1.0.3\Microsoft\Portable\v5.0\Microsoft.Portable.CSharp.targets;找不到

C# 错误MSB4019:导入的项目“0”;C:\Program Files\dotnet\sdk\1.0.3\Microsoft\Portable\v5.0\Microsoft.Portable.CSharp.targets;找不到,c#,.net-core,visual-studio-2017,C#,.net Core,Visual Studio 2017,我有一个.net核心测试项目。当我在VisualStudio中构建它或使用TestManager时,它的构建不会出现问题。但是,当我在package manager控制台上执行以下命令时,我得到一个错误: dotnet testC:\projects\moneyfox\Src\moneyfox.DataAccess.Tests\moneyfox.DataAccess.Tests.csproj 错误: error MSB4019: The imported project "C:\Program

我有一个.net核心测试项目。当我在VisualStudio中构建它或使用TestManager时,它的构建不会出现问题。但是,当我在package manager控制台上执行以下命令时,我得到一个错误:

dotnet test
C:\projects\moneyfox\Src\moneyfox.DataAccess.Tests\moneyfox.DataAccess.Tests.csproj

错误:

error MSB4019: The imported project "C:\Program Files\dotnet\sdk\1.0.3\Microsoft\Portable\v5.0\Microsoft.Portable.CSharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk
错误MSB4019:找不到导入的项目“C:\Program Files\dotnet\sdk\1.0.3\Microsoft\Portable\v5.0\Microsoft.Portable.CSharp.targets”。确认声明中的路径正确,并且文件存在于磁盘上
我检查了那条路,结果它真的不存在。但我有点困惑该怎么办,因为当我在VisualStudio上构建它时,它就可以工作了。
有什么建议吗?

我可以通过观察Visual Studio 2017如何构建项目(增加构建的详细程度)来解决这个问题。我仍然不确定问题的真正原因是什么,并将向Xamarin团队报告问题

步骤1-手动引用与Visual Studio相同的目标文件

在我的
.csproj
文件中,我有以下导入语句

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

我换成了

<Import Project="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Portable\v5.0\Microsoft.Portable.CSharp.targets" />

以匹配Visual Studio导入的.targets文件

一旦我做了这个更改,我的构建错误就增加了,因为现在我缺少了对Visual Studio代表我们神奇地引用的标准名称空间(System、System.Net等)的引用。我也无法通过VisualStudio向程序集添加引用,因为它抱怨重复引用。回到文本编辑器。我手动添加了以下引用,直到解决了生成错误

步骤2-手动引用所需的系统*DLL。

<Reference Include="System">
  <HintPath>..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll</HintPath>
</Reference>
<Reference Include="System">
  <HintPath>..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\System.dll</HintPath>
</Reference>    
<Reference Include="System.Linq">
  <HintPath>..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Facades\system.Linq.dll</HintPath>
</Reference>    
<Reference Include="System.Net">
  <HintPath>..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Net.dll</HintPath>
</Reference>        
<Reference Include="System.Net.Http">
  <HintPath>..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Net.Http.dll</HintPath>
</Reference>

..\..\..\..\..\程序文件(x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll
..\..\..\..\..\程序文件(x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssembles\Microsoft\Framework\MonoAndroid\v1.0\System.dll
..\..\..\..\..\程序文件(x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Facades\system.Linq.dll
..\..\..\..\..\程序文件(x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Net.dll
..\..\..\..\..\程序文件(x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Net.Http.dll

我的解决方案是将项目转换为Sdk类型的csproj

查看有关如何完成此操作的提示

除此之外,我还遇到了分析仪问题,因此我通过以下csproj属性将其关闭:


假的
假的
假的

我也有同样的问题。你能想出解决办法吗?不幸的是不是真的。我用AppVeyor专用的解决方案解决了这个问题。我只是用了--没有构建。该应用程序是Buuld之前与VS,所以我不必再次建立它在这里。在这种情况下,这对我是有效的,但它并不是真正的修复方法。如果你发现更多,请告诉我!