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

NPa*_*utt 8 c# .net-core visual-studio-2017

我有 .net core 测试项目。当我在 Visual Studio 中构建它或使用 TestManager 时,它构建没有问题。但是当我在包管理器控制台上执行以下命令时,出现错误:

点网测试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
Run Code Online (Sandbox Code Playgroud)

我检查了路径,它确实不存在。但我有点困惑该怎么办,因为当我在视觉工作室上构建它时它就起作用了。有什么建议么?

Bab*_*fas 0

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

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

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

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)

我改为

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

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

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

步骤 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>
Run Code Online (Sandbox Code Playgroud)