【问题标题】:ASP.Net Core unit tests "do not match framework/platform settings"ASP.Net Core 单元测试“与框架/平台设置不匹配”
【发布时间】:2019-11-23 18:57:11
【问题描述】:

我有一个 ASP.Net Core 应用程序,其中包括主项目、两个库项目和一个单元测试项目。当我运行单元测试时,它会抱怨:

[7/14/2019 9:55:38 PM Informational] ------ Discover test started ------  
[7/14/2019 9:55:39 PM Warning] Test run will use DLL(s) built for framework .NETCoreApp,Version=v1.0 and platform X86. Following DLL(s) do not match framework/platform settings.  
Indigo.UnitTests.dll is built for Framework 2.2 and Platform AnyCPU.  
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.

[7/14/2019 9:55:41 PM Informational] ========== Discover test finished: 140 found (0:00:02.2274457) ==========  
[7/14/2019 9:55:41 PM Informational] ------ Run test started ------  
[7/14/2019 9:55:41 PM Warning] Test run will use DLL(s) built for framework .NETCoreApp,Version=v1.0 and platform X86. Following DLL(s) do not match framework/platform settings.  
Indigo.UnitTests.dll is built for Framework 2.2 and Platform AnyCPU.  
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.

单元测试显然运行正确。我盯着我的项目配置,我已经阅读了引用的文章,但我无法弄清楚它在抱怨什么。我用谷歌搜索了错误消息,但我发现的内容似乎不适用于我的情况。

这是我的 csproj 文件 (FWIW):

主要项目:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <UserSecretsId>xxx</UserSecretsId>
    <ApplicationInsightsResourceId>xxx</ApplicationInsightsResourceId>
    <ApplicationInsightsAnnotationResourceId>xxx</ApplicationInsightsAnnotationResourceId>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <TypeScriptToolsVersion>3.4</TypeScriptToolsVersion>
  </PropertyGroup>

    <ItemGroup>
        <DotnetPublishFiles Include="App_Data/**/*">
            <DestinationRelativePath>App_Data/%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
        </DotnetPublishFiles>
    </ItemGroup>

    <ItemGroup>
    <Content Remove="wwwroot\bundles\ajax.js" />
    <Content Remove="wwwroot\bundles\captive-page.js" />
    <Content Remove="wwwroot\bundles\captive-page.min.js" />
    <Content Remove="wwwroot\bundles\datepicker.js" />
    <Content Remove="wwwroot\bundles\datepicker.min.js" />
    <Content Remove="wwwroot\bundles\ihi-validation-extensions.min.js" />
    <Content Remove="wwwroot\bundles\jquery-validation.js" />
    <Content Remove="wwwroot\bundles\main.js" />
    <Content Remove="wwwroot\bundles\signalr.js" />
    <Content Remove="wwwroot\bundles\signalr.min.js" />
  </ItemGroup>

  <ItemGroup>
    <_ContentIncludedByDefault Remove="wwwroot\bundles\ajax.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\captive-page.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\captive-page.min.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\datepicker.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\datepicker.min.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\ihi-validation-extensions.min.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\jquery-validation.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\main.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\main.min.css" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\signalr.js" />
    <_ContentIncludedByDefault Remove="wwwroot\bundles\signalr.min.js" />
  </ItemGroup>


  <ItemGroup>
    <PackageReference Include="Flee" Version="1.2.2" />
    <PackageReference Include="Humanizer" Version="2.6.2" />
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.7.1" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.Azure.Services.AppAuthentication" Version="1.2.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.2.5" />
    <PackageReference Include="Microsoft.TypeScript.MSBuild" Version="3.5.2">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" PrivateAssets="All" />
    <PackageReference Include="Neleus.DependencyInjection.Extensions" Version="1.0.0" />
    <PackageReference Include="Sakura.AspNetCore.Mvc.PagedList" Version="2.0.12" />
    <PackageReference Include="Sakura.AspNetCore.PagedList" Version="2.0.2" />
    <PackageReference Include="Sakura.AspNetCore.PagedList.Async" Version="1.0.0" />
    <PackageReference Include="Sendgrid" Version="9.11.0" />
    <PackageReference Include="Twilio" Version="5.31.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\ihi.Lib.Web\ihi.Lib.Web.csproj" />
    <ProjectReference Include="..\..\ihi.Lib\ihi.Lib.csproj" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Areas\Identity\Services\" />
  </ItemGroup>

  <ItemGroup>
    <None Include="wwwroot\bundles\ajax.js" />
    <None Include="wwwroot\bundles\captive-page.js" />
    <None Include="wwwroot\bundles\captive-page.min.js" />
    <None Include="wwwroot\bundles\datepicker.js" />
    <None Include="wwwroot\bundles\datepicker.min.js" />
    <None Include="wwwroot\bundles\ihi-validation-extensions.min.js" />
    <None Include="wwwroot\bundles\jquery-validation.js" />
    <None Include="wwwroot\bundles\main.js" />
    <None Include="wwwroot\bundles\signalr.js" />
    <None Include="wwwroot\bundles\signalr.min.js" />
  </ItemGroup>

  <ItemGroup>
    <WCFMetadata Include="Connected Services" />
  </ItemGroup>

</Project>

单元测试项目:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
    <PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\ihi.Lib.Web\ihi.Lib.Web.csproj" />
    <ProjectReference Include="..\..\ihi.Lib\ihi.Lib.csproj" />
    <ProjectReference Include="..\Indigo\Indigo.csproj" />
  </ItemGroup>

</Project>

第一个库项目:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="libphonenumber-csharp" Version="8.10.14" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4" />
    <PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
    <PackageReference Include="protobuf-net" Version="2.4.0" />
  </ItemGroup>

</Project>

第二个库项目:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Braintree" Version="4.12.0" />
    <PackageReference Include="Markdig" Version="0.17.0" />
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.7.1" />
    <PackageReference Include="Microsoft.AspNetCore.Html.Abstractions" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="protobuf-net" Version="2.4.0" />
    <PackageReference Include="RestSharp" Version="106.6.10" />
    <PackageReference Include="Sendgrid" Version="9.11.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\ihi.Lib\ihi.Lib.csproj" />
  </ItemGroup>

</Project>

【问题讨论】:

  • 它抱怨单元测试项目中使用的引用&lt;ProjectReference Include="..\Indigo\Indigo.csproj" /&gt;。它的格式/框架不正确。
  • 好吧,我放弃了……那个项目参考有什么不正确的地方? (要加分,请解释 Visual Studio 2017 如何设法创建无效的项目引用 [我现在正在使用 VS 2019]。要获得更多分,请解释为什么直到最近它才向我抱怨。甚至更多分,解释为什么人们不赞成这个问题。)

标签: c# visual-studio unit-testing asp.net-core .net-core


【解决方案1】:

这个问题似乎在 Visual Studio 16.2.2 中得到修复。

【讨论】:

  • 在 VS 16.4.2 中遇到完全相同的问题。我在解决方案中添加的第一个测试项目很好。我添加的第二个测试项目我得到“测试运行将使用为框架 .NETCoreApp,Version=v1.0 和平台 X86 构建的 DLL。以下 DLL 与框架/平台设置不匹配。IntegrationTests.dll是为 Framework.NETCoreApp,Version=v3.1 和 Platform AnyCPU”构建的。尝试删除项目并重新添加,创建新项目,清理解决方案,重新启动 VS,似乎没有任何效果。
【解决方案2】:

我刚刚从 Visual Studio 16.1.x 更新到 16.3.3,我遇到了类似的问题。我通常使用“.runsettings”文件运行我的测试,我发现我必须做两件事:

  • 从“.runsettings”文件中删除&lt;TargetFrameworkVersion&gt; 设置。
  • 在“构建”菜单中,运行“清洁解决方案”。 (没有这个,测试运行器的结果将不会显示在测试资源管理器中。)

【讨论】:

    【解决方案3】:

    我最近在 VS 2019 16.5.2 上遇到了这个问题 - 结果项目已更新到 Microsoft.NET.Test.Sdk 16.5 - 降级到 16.2 解决了我的问题。我通过一次成功降级一个版本获得了 v16.2。 16.4 等等。

    似乎 Microsoft.NET.Test.Sdk 16.5 需要 NET Core 3.0+

    【讨论】:

      猜你喜欢
      • 2018-10-17
      • 2021-09-17
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      相关资源
      最近更新 更多