Visual Studio не компилируется в каталоги отладки и выпуска - PullRequest
0 голосов
/ 11 сентября 2018

Я работаю с Visual Studio 2017. Я унаследовал веб-проект и пытаюсь представить конфигурации сборки для преобразований конфигурации. Что мне показалось странным, так это то, что независимо от того, какую конфигурацию сборки я выбрал, проект всегда компилируется в каталог bin \, без подкаталога для выбранной сборки.

Что еще страннее, я создал два новых веб-проекта, чтобы выяснить, где может быть проблема, и получил разные результаты. Одним из них был веб-проект .Net Core, который создавал каталоги Debug и Release при компиляции в этих конфигурациях сборки. Другой, как и унаследованный проект, был веб-проектом .Net Framework, и он также компилировался только в каталог bin \.

Кто-нибудь знает, что происходит?

1 Ответ

0 голосов
/ 13 сентября 2018

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

Для каждого узла PropertyGroup, который определил параметры, используемые для сборки, я изменил значение OutputPath с bin \ на bin \ $ (Конфигурация).

Затем вставил следующее в узел Project, чтобызаставить преобразование работать:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <Target Name="AfterCompile" Condition="Exists('Web.$(Configuration).config')">
    <TransformXml Source="Web.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="Web.$(Configuration).config" />
    <ItemGroup>
      <AppConfigWithTargetPath Remove="Web.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>
...