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

时间:2017-05-05 14:49:18

标签: c# .net-core visual-studio-2017

我有.net核心测试项目。当我在visual studio中构建它或使用TestManager时,它构建没有问题。但是当我在包管理器控制台上执行以下命令时,我收到一个错误:

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

我检查了路径,它确实不存在。但我有点不知道该怎么做,因为当我在visual studio上构建它时它会起作用。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

通过观察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等)的引用。我也无法通过Visual Studio添加对程序集的引用,因为它抱怨重复引用。所以回到文本编辑器。我手动a =添加以下引用,直到我的构建错误得到解决。

步骤2 - 手动引用您需要的System * 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>

答案 1 :(得分:0)

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

查看this answer,了解有关如何完成此操作的提示。

除此之外,我的分析仪出现问题,因此我通过以下csproj属性将其关闭:

<Project>
  <PropertyGroup>
    <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild>
    <RunAnalyzersDuringLiveAnalysis>false</RunAnalyzersDuringLiveAnalysis>
    <RunAnalyzers>false</RunAnalyzers>
  </PropertyGroup>
</Project>
相关问题