Как остановить .net-core от непрерывного добавления папок при сборке - PullRequest
2 голосов
/ 23 мая 2019

Каждый раз, когда я собираю свой проект .NET Core, он добавляет более глубокую папку, содержащую файл .csproj в \bin\release.В результате получается следующая структура папок:

D:\home>
D:\home\site>
D:\home\site\repository>
D:\home\site\repository\bin>
D:\home\site\repository\bin\Release>
D:\home\site\repository\bin\Release\netcoreapp2.1>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin\Release>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1\bin>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1\bin\Release>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1\bin>
D:\home\site\repository\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1\bin\Release\netcoreapp2.1\bin\Release>

Это продолжает расти, когда выполняется больше сборок.

В Visual Studio очистка и восстановление помогают решить эту проблему.После нескольких сборок имя файла становится слишком длинным, что вызывает ошибку при попытке запустить приложение.

Сначала это не имело значения, но при развертывании WebApp-Bot в Azure происходит то же самое.Проблема в том, что у меня нет возможности удалить лишние файлы с сервера.Вот почему мне нужно, чтобы это вообще не происходило.

Файл .csproj:

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <UserSecretsId>SOME_USER_SECRETS_ID</UserSecretsId>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="%2a%2a\**" />
    <Content Remove="%2a%2a\**" />
    <EmbeddedResource Remove="%2a%2a\**" />
    <None Remove="%2a%2a\**" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Gremlin.Net" Version="3.4.1" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
    <PackageReference Include="Microsoft.Bot.Builder.AI.Luis" Version="4.4.3" />
    <PackageReference Include="Microsoft.Bot.Builder.Dialogs" Version="4.4.3" />
    <PackageReference Include="Microsoft.Bot.Builder.Integration.AspNet.Core" Version="4.4.3" />
    <PackageReference Include="Microsoft.Recognizers.Text.DataTypes.TimexExpression" Version="1.1.6" />
  </ItemGroup>

  <Import Project="PostDeployScripts\IncludeSources.targets" Condition="Exists('PostDeployScripts\IncludeSources.targets')" />
  <Import Project="..\PostDeployScripts\IncludeSources.targets" Condition="Exists('..\PostDeployScripts\IncludeSources.targets')" />
  <ItemGroup>
    <None Remove="%2a%2a\%2a.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="bin\" />
  </ItemGroup>
  <ProjectExtensions><VisualStudio><UserProperties Properties_4launchSettings_1json__JSONSchema="" /></VisualStudio></ProjectExtensions>

</Project>

includesources.targets, который я сейчас вижу, имеет флаг always:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Compile Update="**\*.cs">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Compile>
    <None Include="**\*.csproj" >
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="PostDeployScripts\*.*" >
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

Я хотел бы знать, почему это происходит и как это остановить, вся помощь приветствуется.

1 Ответ

3 голосов
/ 23 мая 2019

В вашем файле includesources.targets есть этот маленький драгоценный камень:

<Compile Update="**\*.cs">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Compile>

Что, если я правильно понимаю, приведет к копированию файлов .cs в вашу выходную папку.В следующий раз, когда будет запущена сборка, эти файлы, вероятно, также будут скомпилированы, создав новый bin\Release\netcoreapp2.1 из этого места.

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

...