Я выключил TreatWarningsAsErrors, так как продолжал получать ошибки при публикации, когда для автономности установлено значение true. Теперь VS2017 успешно публикуется, но публикация dotnet из командной строки по-прежнему сообщает о тех же ошибках. Как это исправить?
Пример ошибок, которые я получаю: ошибка NU1605: Обнаружено понижение версии пакета: System.Runtime.InteropServices с 4.3.0 до 4.1.0. Ссылка на пакет непосредственно из проекта, поэтому выберите другую версию.
Параметры публикации 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 публиковать исполняемый файл?
Сообщение об ошибке выделено жирным шрифтом в моем вопросе выше
Извините, я пропустил это. Не могли бы вы опубликовать содержимое файла вашего проекта?
добавлено содержимое csproj
он также не сообщает об ошибках в строке cmd, ЕСЛИ я удаляю переключатели --self-contained и -r win-x64. не уверен, почему, поскольку они присутствуют, когда это делает Visual Studio!
Я бы попробовал добавить TargetLatestRuntimePatch и установить для него значение true в файле проекта. docs.microsoft.com/en-us/dotnet/core/deploying/…
Давайте продолжить обсуждение в чате.





ProgrammerMan привел меня к решению, которое заключалось в том, чтобы добавить
<NoWarn>$(NoWarn);NU1605</NoWarn>
в csproj каждого проекта в решении.
На самом деле это был @Мартин-Ульрих. ;)
Не ответ, а дополнительная информация, которая в конечном итоге может помочь найти «настоящее» решение...
Я полагаю, вы найдете те же ошибки NU1605 в VS2017, но разница в том, что они рассматриваются как предупреждения, поэтому публикация завершается успешно. После публикации вы можете увидеть предупреждения в окне вывода — Вид > Выход, а затем Показать вывод из: Build.
Когда вы говорите, что это не работает, что вы имеете в виду? Вы получаете сообщение об ошибке, если да, то какое сообщение? Нам нужно больше информации.