Приложение .NET Core 2.1 публикуется из VS2017, но не из командной строки? - PullRequest
1 голос
/ 07 мая 2019

Я выключил TreatWarningsAsErrors, так как я продолжал получать ошибки при публикации, когда для автономных задано значение true. Теперь VS2017 публикуется успешно, но в командной строке dotnet publish все равно выдает те же ошибки. Как это можно исправить?

Пример ошибок, которые я получаю: ошибка NU1605: Обнаружено понижение пакета: System.Runtime.InteropServices с 4.3.0 до 4.1.0. Ссылка на пакет прямо из проекта, поэтому выберите другую версию.

VS2017 Опубликовать настройки, которые действительно работают: enter image description here строка cmd, которая не работает:

dotnet publish "c:\myproject.csproj" -f netcoreapp2.1 -c "Debug" -o "c:\users\me\dekstop\publish" --self-contained true -r win-x64

РЕДАКТИРОВАТЬ добавленное csproj содержимое *

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

<PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
    <Platforms>x64;x86</Platforms>
</PropertyGroup>

<PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <EnableDefaultCompileItems>False</EnableDefaultCompileItems>
</PropertyGroup>

<ItemGroup>
    <Compile Include="..\..\GlobalInfo\GlobalAssemblyInfo.cs">
        <Link>Properties\GlobalAssemblyInfo.cs</Link>
    </Compile>
    <Compile Include="Configuration\CrossPlatformConfiguration.cs" />
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Registrations\SetupModule.cs" />
</ItemGroup>

<ItemGroup>
    <Reference Include="Autofac">
        <HintPath>..\..\packages\autofac\4.9.2\lib\netstandard2.0\Autofac.dll</HintPath>
    </Reference>
    <Reference Include="log4net">
        <HintPath>..\..\packages\log4net\2.0.8\lib\netstandard1.3\log4net.dll</HintPath>
    </Reference>
</ItemGroup>

<ItemGroup>
    <ProjectReference Include="..\..\proj1.csproj" />
    <ProjectReference Include="..\..\proj2.csproj" />
</ItemGroup>

<ItemGroup>
    <None Update="app.config">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
</ItemGroup>

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>..\..\_Keys\Private\MyXkey.snk</AssemblyOriginatorKeyFile>
    <AssemblyName>Test.Setup</AssemblyName>
    <RootNamespace>Test.Setup</RootNamespace>
    <DelaySign>false</DelaySign>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
    <OutputPath>..\..\Bin\x86\Debug\</OutputPath>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <OutputPath>..\..\Bin\x64\Debug\</OutputPath>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <OutputPath>..\..\Bin\x64\Release\</OutputPath>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
    <OutputPath>..\..\Bin\x86\Release\</OutputPath>
</PropertyGroup>

Что здесь происходит иначе, что позволяет VS2017 публиковать исполняемый файл?

Ответы [ 2 ]

1 голос
/ 07 мая 2019

ProgrammerMan привел меня к решению, которое должно было добавить

<NoWarn>$(NoWarn);NU1605</NoWarn>

к csproj каждого проекта в решении.

0 голосов
/ 18 июня 2019

Не ответ, но некоторая дополнительная информация, которая может в конечном итоге помочь в «реальном» решении ...

Я полагаю, вы найдете те же ошибки NU1605 в VS2017, но разница в том, что они рассматриваются какпредупреждения, поэтому публикация завершается успешно.
После публикации вы можете увидеть предупреждения в окне «Вывод» - Просмотр > Вывод , а затем Показать вывод из: Build .

  • Я считаю, что ошибки / предупреждения связаны с целевым временем выполнения (-r), и что-либо, кроме 'Portable' (или пустое), вызовет их.
  • Я обновилв .NET Core 2.2.107 и по-прежнему получать их.
  • Я также получаю то же самое с моим проектом .NET Standard 2.0.
  • Я также отключил их, добавив то же предложение NoWarn.
...