Приложение .NET Core 2.1 публикуется из VS2017, но не из командной строки?

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

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

Параметры публикации VS2017, которые действительно работают: Приложение .NET Core 2.1 публикуется из VS2017, но не из командной строки? строка 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 публиковать исполняемый файл?

Когда вы говорите, что это не работает, что вы имеете в виду? Вы получаете сообщение об ошибке, если да, то какое сообщение? Нам нужно больше информации.

ProgrammerMan 07.05.2019 20:13

Сообщение об ошибке выделено жирным шрифтом в моем вопросе выше

Theodosius Von Richthofen 07.05.2019 20:14

Извините, я пропустил это. Не могли бы вы опубликовать содержимое файла вашего проекта?

ProgrammerMan 07.05.2019 20:17

добавлено содержимое csproj

Theodosius Von Richthofen 07.05.2019 20:24

он также не сообщает об ошибках в строке cmd, ЕСЛИ я удаляю переключатели --self-contained и -r win-x64. не уверен, почему, поскольку они присутствуют, когда это делает Visual Studio!

Theodosius Von Richthofen 07.05.2019 20:29

Я бы попробовал добавить TargetLatestRuntimePatch и установить для него значение true в файле проекта. docs.microsoft.com/en-us/dotnet/core/deploying/…

ProgrammerMan 07.05.2019 20:34

Давайте продолжить обсуждение в чате.

Theodosius Von Richthofen 07.05.2019 20:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
365
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

На самом деле это был @Мартин-Ульрих. ;)

ProgrammerMan 07.05.2019 23:38

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

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

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

Другие вопросы по теме