файл app.config в новом формате .csproj - PullRequest
0 голосов
/ 29 января 2020

Visual Studio предоставила уменьшенный формат файла .csproj.

Я пытаюсь создать приложение. NET Framework (версия 4.6.1), но использую новый редактируемый вручную файл.

Как и в предыдущем случае, я хочу, чтобы файл app.config был скопирован в выходной каталог, но переименован в <output_exe>.config (где output_exe - имя исполняемого файла).

Что мы помещаем в файл .csproj для этого?

Это не работает, потому что не переименовывает файл:

<ItemGroup>
  <Content Include="App.config">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

Ответы [ 3 ]

2 голосов
/ 29 января 2020

Просто добавьте свойство AppConfig, которое ожидает msbuild и инструментарий для этого дополнения:

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net472</TargetFramework>
    <AppConfig>App.config</AppConfig>
  </PropertyGroup>

</Project>

Это позволяет цели PrepareForBuild msbuild автоматически выбрать файл, и последующие шаги сборки также могут редактировать это файл в качестве логического файла - например, SDK изменит раздел startup / supportRuntime в соответствии с определенным значением TargetFramework. Добавление этого элемента в качестве пользовательского элемента или шага сборки потеряло бы эту способность.

0 голосов
/ 29 января 2020

Это работает, если вы добавляете элемент Link:

<ItemGroup>
    <Content Include="App.config">
        <Link>$(AssemblyName).exe.config</Link>
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>

Единственная проблема заключается в том, что, хотя он существует в файловой системе как app.config, среда IDE отображает файл в качестве цели имя

enter image description here

0 голосов
/ 29 января 2020

Попробуйте добавить сценарии, как показано ниже, чтобы выполнить эту работу:

  <ItemGroup>
    <Content Include="App.config">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

и

  <Target Name="MyCustomTarget" AfterTargets="build">
    <Move SourceFiles="$(OutputPath)\App.config" DestinationFiles="$(OutputPath)\$(AssemblyName).config" />
  </Target>

Первый сценарий может убедиться, что файл App.config будет скопирован в выходную папку, и второй сценарий переименует файл с AssemblyName (имя исполняемого файла) после цели сборки.

Подробнее: Если нам нужен ProjectName.exe.config, тогда используйте $(OutputPath)\$(AssemblyName).exe.config. Если нам нужен ProjectName.config, тогда используйте $(OutputPath)\$(AssemblyName).config. Мы можем настроить формат переименованного файла в соответствии с тем, что нам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...