programing

ASP.NET Core: 게시 시 파일 제외 또는 포함

topblog 2023. 7. 12. 22:13
반응형

ASP.NET Core: 게시 시 파일 제외 또는 포함

에 이전에 .aspdotnet1.0/제함에 포함 섹션 project.json

{
  "exclude": [
    "node_modules",
    "bower_components"
  ],
  "publishExclude": [
    "**.xproj",
    "**.user",
    "**.vspscc"
  ]
}

1이? (ASP.NET Core 1.1 )project.json에? 비슷한 섹션이 있습니까?.csproj 또는 일또는.pubxml?

설명서에서: 예를 들어 앱과 함께 게시할 일부 파일을 지정하려면 에 있는 알려진 메커니즘을 사용할 수 있습니다.csproj 그을위예해 (들어를것예들),<Content>요소).

이 .CopyToPublishDirectory 성속한의 .ItemGroup 파일을 게시 디렉터리에 복사할지 여부를 결정하는 요소로, 다음 값 중 하나를 가질 수 있습니다.

  • 항상,
  • 최신 상태 유지
  • 절대.

참고로, 유사한 것도 있습니다.CopyToOutputDirectory출력 폴더의 속성입니다.

예(여기서부터):

<ItemGroup>

  <None Include="notes.txt" CopyToOutputDirectory="Always" />
  <!-- CopyToOutputDirectory = { Always, PreserveNewest, Never } -->

  <Content Include="files\**\*" CopyToPublishDirectory="PreserveNewest" />
  <None Include="publishnotes.txt" CopyToPublishDirectory="Always" />
  <!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } -->
</ItemGroup>

롭다면 how 만당흥미어떻게면다롭약.project.json -.csproj 사용 이마레션사CopyToPublishDirectory게시 옵션을 마이그레이션하는 속성입니다. Dotnet clipo에서 MigratePublishOptionsRule 클래스를 조사할 수 있습니다.

.csprojVisual Studio 버전 15.3 이상의 경우 Visual Studio에 파일이 표시되고("Content Remove"는 표시되지 않음) 파일이 게시되지 않도록 합니다.

<ItemGroup>
    <Content Update="appsettings*.json" CopyToPublishDirectory="Never" />
</ItemGroup>

비주얼 스튜디오 2017 15.3 이후

.csproj 파일을 편집하여 파일/폴더를 게시에서 수동으로 제외합니다.

<ItemGroup>
  <Content Remove="src\**" />
  <Content Remove="node_modules\**" />
</ItemGroup>

참조: https://www.danielcrabtree.com/blog/273/fixing-the-duplicate-content-error-after-upgrading-visual-studio-2017

Visual Studio 2017(15.6.5에서 테스트)을 사용하면 솔루션 탐색기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 빌드 작업을 없음으로 설정할 수 있습니다.

은 당신의 업트됩다를 입니다..csproj다음과 같은 파일:

<ItemGroup>
  <Content Remove="appsettings.Development.json" />
  <Content Remove="appsettings.json" />
  <Content Remove="npm-shrinkwrap.json" />
  <Content Remove="package.json" />
  <Content Remove="tsconfig.json" />
</ItemGroup>

<ItemGroup>
  <None Include="appsettings.Development.json" />
  <None Include="appsettings.json" />
  <None Include="npm-shrinkwrap.json" />
  <None Include="package.json" />
  <None Include="tsconfig.json" />
</ItemGroup>

이게 도움이 되길 바랍니다.

Visual Studio 2019의 경우 다음 코드를 사용하여 "dummy"라는 이름의 wwwroot 하위 폴더("dummy"의 모든 하위 폴더 포함)를 게시 출력에서 제외할 수 있었습니다.

<ItemGroup>
  <Content Update="wwwroot\dummy\**\*">
    <CopyToPublishDirectory>Never</CopyToPublishDirectory>
  </Content>
</ItemGroup>

참고: wwwroot 및 해당 하위 폴더는 프로젝트에 포함된 상태로 유지하되 게시 중에는 제외해야 합니다.

을 편집합니다. 예:FolderProfile.pubxml파일 및 폴더를 포함/제외하기 위해 아래에 표시된 적절한 XML 요소를 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <PublishProvider>FileSystem</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <PublishFramework />
    <ProjectGuid>afa9f185-7ce0-4935-9da1-ab676229d68a</ProjectGuid>
    <publishUrl>bin\Release\PublishOutput</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>
  <ItemGroup>

    <!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } -->

    <!-- Copying a file located outside of the project into the published site's wwwroot folder. -->
    <ResolvedFileToPublish Include="..\ReadMe2.md">
      <RelativePath>wwwroot\ReadMe2.md</RelativePath>
      <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
    </ResolvedFileToPublish>

    <!-- Excluding the wwwroot\Content folder. -->
    <Content Update="wwwroot\Content\**\*" CopyToPublishDirectory="Never" />

    <!-- Excluding the Views\Home\About2.cshtml file. -->
    <Content Update="Views\Home\About2.cshtml" CopyToPublishDirectory="Never" />
  </ItemGroup>
</Project>

참고 항목:Visual Studio 게시 프로파일 - 선택적 파일 포함

@Craig Wilson의 솔루션은 Visual Studio 2022 및 Core 6과 함께 게시하는 데 큰 도움이 되었습니다.

다음은 appsettings.json과 appsettings를 제외한 모든 appsettings를 제외한 샘플입니다.ASPNETCORE_ENVORYENCENT=QA와 같은 시스템 수준에서 환경 변수를 설정하는 경우의 QA.json

창에서 dotnet pubish 명령을 실행할 때 사용하는 것과 동일한 powershell에서 환경 변수를 즉시 설정할 수도 있습니다.

$env:ASPNETCORE_ENERVICEENMENT = 'QA'

해당 파워셸을 닫으면 해당 변수가 삭제됩니다.

    <!-- Publish Settings -->
    <ItemGroup>
        <Content Update="appsettings.*.json">
        <CopyToPublishDirectory>Never</CopyToPublishDirectory>
        </Content>  
        <Content Update="appsettings.$(ASPNETCORE_ENVIRONMENT).json">
        <CopyToPublishDirectory>Always</CopyToPublishDirectory>
        </Content>  
        <Content Update="appsettings.$(ASPNETCORE_ENVIRONMENT).json">
        <CopyToPublishDirectory>Always</CopyToPublishDirectory>
        </Content>      
    </ItemGroup>   

Visual studio 2022에서는 기본적으로 모든 파일이 포함되어 있으므로 Update를 사용하면 됩니다.

저 같은 경우에는 현지인이 필요해요.디버그 중에는 settings.json 로컬이지만 릴리스 빌드 또는 게시 중에는 WebDeploy zip 파일에 포함하지 않습니다.

  <ItemGroup>
    <Content Include="..\local.settings.json" Link="local.settings.json" Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
    <Content Include="..\local.settings.json" Link="local.settings.json" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

**

몇 개의 파일이 들어 있는 폴더가 게시되지 않는 것을 발견했습니다. 프로젝트에서 폴더를 마우스 오른쪽 단추로 클릭하여 배포에 폴더를 포함하는 옵션을 선택할 수 있는지 확인했습니다. 폴더에 있는 파일을 선택하고 배포 시 복사하도록 표시했는지 확인했습니다.프로세스에서 파일을 복사하고 폴더를 만듭니다.

이렇게 하면 폴더에 파일이 있는 경우에는 도움이 되지만 폴더가 비어 있으면 도움이 되지 않습니다.

.csproj 파일을 편집하여 파일/폴더를 게시에서 수동으로 제외합니다.

이것 또한 참조할 수 있습니다.

웹 배포에 대한 내용은 https://blogs.msdn.microsoft.com/webdev/2010/04/22/web-deployment-excluding-files-and-folders-via-the-web-applications-project-file/ 을 참조하십시오.

project.json이제 로 대체되었습니다.csproj여러분은 https://www.stevejgordon.co.uk/project-json-replaced-by-csproj 에서 그것에 대해 더 읽을 수 있습니다.

기존 .NET Core 1.0 프로젝트 업그레이드 또는 .NET Core 1.1 사용에 대한 내용은 https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-1-1/ 을 참조하십시오.

Visual Studio 2019에서.

  1. 파일을 마우스 오른쪽 단추로 클릭합니다. -> 속성
  2. 출력 디렉터리에 복사 -> 항상 복사

enter image description here

  1. 솔루션 저장 후 게시 시도

visual studio 2022: csproj 언로드, 콘텐츠 및 하위 폴더를 추가하려면 다음을 삽입합니다.

<ItemGroup>
        <None Update="StaticContent\**">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
    </ItemGroup>

비주얼 스튜디오 2019:

  1. "솔루션 탐색기"에서 파일의 "속성"으로 이동합니다.
  2. "출력 디렉터리에 복사" 속성을 원하는 값("항상 복사", "복사 안 함", "새로 복사")으로 변경합니다.

언급URL : https://stackoverflow.com/questions/42712055/asp-net-core-exclude-or-include-files-on-publish

반응형