Как исключить App.config из пакета .exe в однофайловом автономном приложении WinForms для .net core 3? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть приложение Winforms .NET Core 3, которое я хочу опубликовать как автономное развертывание одного файла

Вот соответствующий .csproj файл

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

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <PublishSingleFile>true</PublishSingleFile>
  </PropertyGroup>

  <ItemGroup>
    <!--PackageReferences-->
  </ItemGroup>

  <ItemGroup>
    <!--ProjectReferences-->
  </ItemGroup>

</Project>

IЯ использую <RuntimeIdentifier>win-x64</RuntimeIdentifier>, чтобы он генерировал автономное развертывание для Windows x64 и <PublishSingleFile>true</PublishSingleFile>, чтобы все встраивалось в файл .exe.

При публикации с помощью команды:

dotnet publish -c Release

Я получаю файлы .exe и .pdb в bin\Release\netcoreapp3.0\win-x64\publish

- MyApp.exe
- MyApp.pdb

Что мне нужно изменить в файле .csproj, чтобы получить MyApp.dll.config или MyApp.exe.config в зависимости от того, чтоисправить рядом с .exe, чтобы приложение фактически считывало конфигурацию из него вместо встроенного App.Config?

Я попытался добавить это

<ItemGroup>
  <Content Update="*.config">
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
  </Content>
</ItemGroup>

, как указано в этой ссылке Публикация в одном файле - сборка системного интерфейса , но при этом он создает только два файла.

1 Ответ

0 голосов
/ 11 ноября 2019

Ваш вопрос помог мне понять это для меня, так что спасибо. надеюсь, это работает и для вас.

мой .csproj выглядит как

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PublishReadyToRun>true</PublishReadyToRun>
    <PublishSingleFile>true</PublishSingleFile>
    <PublishTrimmed>true</PublishTrimmed>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="*.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
    </Content>
  </ItemGroup>

, только что провел дополнительное тестирование с файлом .config

<ItemGroup>
    <None Update="*.config">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
    </None>
  </ItemGroup>

, который работал для меня, с другим конфигом сверху.

...