我有.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上构建它时它会起作用。 有什么建议吗?
答案 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>