Как гарантировать, что проекты dotnet будут восстановлены с теми же настройками? - PullRequest
0 голосов
/ 02 июля 2019

Я добавил проект тестирования Xunit в свой последний проект , настроенный с помощью конвейеров Azure. Все мои тесты пройдены, но поскольку я добавил XUnit, триггеры VSBuild :

Ошибка: NETSDK1061: проект был восстановлен с использованием Microsoft.NETCore.App версии 1.0.0, но с текущими настройками вместо него будет использоваться версия 2.0.9. Чтобы решить эту проблему, убедитесь, что одни и те же параметры используются для восстановления и для последующих операций, таких как сборка или публикация. Обычно эта проблема может возникнуть, если свойство RuntimeIdentifier установлено во время сборки или публикации, но не во время восстановления. Для получения дополнительной информации см. https://aka.ms/dotnet-runtime-patch-selection.

Я попытался внести ручные изменения в файлы .csproj и восстановить их, очистив решение, но я просто не могу понять, что вызывает отключение.

В моем решении три файла .csproj. Я не уверен, как решить их разницу. Любая помощь будет принята с благодарностью, потому что это мой личный проект на следующий месяц или два, и я бы хотел, чтобы КИ обрабатывался раньше

Proj 1 - Библиотека классов:

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

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
    <OutputType>Library</OutputType>
  </PropertyGroup>

</Project>

Proj 2 - XUnit:

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
    <PackageReference Include="xunit" Version="2.4.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\PlisskenLibrary\PlisskenLibrary.csproj" />
  </ItemGroup>

</Project>

Запуск проекта - Консольный проект:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{D75CE556-EDB3-40ED-B836-168DAA5F12A7}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>Plissken</RootNamespace>
    <AssemblyName>Plissken</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Repl.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\PlisskenLibrary\PlisskenLibrary.csproj">
      <Project>{ebca8a6a-abae-4a43-b43e-672cb9feafad}</Project>
      <Name>PlisskenLibrary</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

И, наконец, мой лазурный конвейерный yml-файл

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Таким образом, проблема оказалась в том, что я создал консольное приложение с .NET Framework вместо использования консольного приложения .NET Core. Я заменил старое консольное приложение на ядро ​​.NET, и все мои проблемы исчезли.

С этого момента и навсегда, я буду использовать dotnet new console вместо графического интерфейса, потому что я гораздо менее склонен совершать ошибки. Хорошие времена.

0 голосов
/ 03 июля 2019

Как обеспечить восстановление проектов dotnet с теми же настройками?

Согласно предоставленному вами журналу сборки, вы используете nuget.exe 4.3.0 для восстановления пакетов.Но, похоже, Nuget.exe 4.3.0 перестало корректно восстанавливаться при установке .Net core SDK 2.2.*.

Итак, чтобы решить эту проблему, попробуйте использовать Nuget.exe 4.4.1.

Кроме того, еслиПриведенное выше не решает эту проблему, вы можете проверить, поможет ли вам ответ в следующем потоке:

Проект был восстановлен с использованием Microsoft.NETCore.App версии 2.1.0, но с текущими настройками, версияВместо него будет использоваться 2.1.0-rtm-26515-03

Добавить атрибут TargetLatestRuntimePatch в .csproj файл:

<PropertyGroup>
  <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>

или

установить RuntimeFrameworkVersion и RuntimeIdentifier в файле .csproj:

 <PropertyGroup>
   <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
   <PlatformTarget>AnyCPU</PlatformTarget>
   <RuntimeIdentifier>win-x64</RuntimeIdentifier>
 </PropertyGroup>

Надеюсь, это поможет.

...