게시 오류:상대 경로가 동일한 여러 게시 출력 파일을 찾았습니다.
ABP 프로젝트를 공개하면 다음 오류가 발생합니다.
C:\Program Files\dotnet\sdk\6.0.100-rc.1.21458.32\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets(112,5): error NETSDK1152: Found multiple publish output files with the same relative path:
D:\Github\volo\abp\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\compilerconfig.json,
D:\Github\volo\abp\bookstore\src\Acme.BookStore.Theme\compilerconfig.json,
D:\Github\volo\abp\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\package.json,
D:\Github\volo\abp\bookstore\src\Acme.BookStore.Web\package.json.
D:\Github\volo\abp\bookstore\src\Acme.BookStore.Web\Acme.BookStore.Web.csproj
문제:
이 문제는 이후에 발생합니다.NET 6 이행여러 파일이 동일한 파일 이름의 동일한 대상 디렉터리에 복사되지 않도록 차단하는 새로운 기능이 있습니다.https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/duplicate-files-in-output 를 참조해 주세요.
솔루션 #1 (회피책):
다음 빌드 속성을 모든 게시 가능(*)에 추가할 수 있습니다.Web) 프로젝트의 *.csproj 파일.이 속성은 이 체크를 생략하고 이전과 같이 작동합니다.NET5.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
솔루션 2:
출력 폴더에 복사할 문제가 있는 파일을 제외합니다.에서는 이런compilerconfig.json
★★★★★★★★★★★★★★★★★」package.json
.
하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, , 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다,common.props
): (솔루션 에 있습니다).
<Content Remove="compilerconfig.json;package.json"/>
<None Include="compilerconfig.json;package.json">
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
위의 답변이 저의 해결책으로 이어졌습니다.이 케이스는 자체 구축 엔티티 프레임워크 라이브러리 프로젝트입니다.이 라이브러리 프로젝트를 사용한 웹 사이트를 구축할 때 appsettings.json 위에 복사하고 있었습니다.
솔루션에서는 (VS**에서 이행 액션을 수행할 때) 출력 폴더에 복사하도록 하고 웹 사이트 또는 웹 서비스 하에서만 라이브러리로 게시되므로 "Never" 값을 사용하여 게시하지 않도록 했습니다.
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</Content>
</ItemGroup>
** EF 라이브러리 프로젝트는 이 데이터 시드 기사의 패턴에 따라 자체적으로 구축됩니다.
그래서 나는 내 케이크를 먹고 그것을 보관한다.
이를 azure devops pipleline으로 가져오는 경우 다음 작업을 추가하여 빌드의 SDK 버전을 지정할 수 있습니다.
- task: UseDotNet@2
displayName: 'Install .Net SDK version'
inputs:
packageType: sdk
version: x.x.xxx //example (3.1.416)
installationPath: $(Agent.ToolsDirectory)/dotnet
.둘 다 Blazor Web Assembly를 가지고 있었습니다.appsettings.json
가 ★★★★★★★★★★★★★★★★★★★★★★★★★.dotnet publish
깃허브나에게 도움이 되는 두 가지 방법을 추가로 찾았습니다(허용된 답변과 함께).
<IsPublishable>false</IsPublishable >
- 서서
dotnet publish
「」를 지정합니다..csproj
인수 경유
저는 레이저 클래스 라이브러리가 있는 웹 어플리케이션에서 이 문제에 부딪혔습니다.범인 파일은 LIBMAN입니다.JSON.
파일을 마우스 오른쪽 버튼으로 클릭하고 파일의 속성을 다음과 같이 변경합니다.
빌드 액션: 없음
출력 디렉토리에 복사: 복사하지 마십시오.
툴링에만 사용되는 다른 파일도 같은 방식으로 변경될 수 있습니다.
이 문제는 의 변경이 중단되었기 때문에 발생합니다.NET 6 SDK 와는 독립되어 있습니다.프로젝트의 타겟이 되는 NET 버전.예를 들어, Visual Studio 2022 를 인스톨 하면,가 인스톨 됩니다.NET 6 SDK를 구축 및 배포에 사용합니다.
VS의 SDK를 으로써 VS가 SDK 할 수 .global.json
실행해 줄서다dotnet new globaljson
, 「」를 합니다."version"
버전을 값(「SDK 사용」)dotnet --list-sdks
★★★★★★★★★★★★★★★★★★★★★」
이것은 A와 B가 모두 실행 가능하고 자체 appsettings.json이 있는 프로젝트 의존관계 A->B가 있다면 B의 모든 기능을 갖춘 셸 프로젝트로서 B1로 프로젝트 B를 분할하는 것이 바람직하다는 것을 의미합니다.이것에 의해, 의존 관계 A-> B2 및 B1-> B2에 의해서, 「복수의 퍼블리시 출력 파일」의 문제가 회피됩니다.
compilerconfig.json
scs의 css를 하기 위해 합니다.UI를 통해 가장 쉽게 해결할 수 있는 것은 다음과 같습니다.
Open Solution Explorer->compilerconfig.json->right click->properties
을 사용하다
Build Action: None
Copy to Output Directory: Do not copy
모든 컴파일러.config 파일에 대해 이 작업을 수행합니다(클라이언트 프로젝트 및 서버상의 경우).
그 이유는 이 컴파일러 구성이 빌드 프로세스에서만 로컬로 사용되며 앱 실행 중에는 나중에 필요하지 않기 때문입니다.
프로젝트(같은 솔루션의 모든 부분)에서 동일한 nuget pacage의 다른 버전을 사용하는 경우 이 오류가 나타납니다.이제 어떤 이유로 두 버전을 모두 유지해야 하는 경우(좋은 방법이 아님)에 답변에서 언급된 다른 해결 방법을 찾을 수 있습니다.
또는 올바른 작업을 수행하여 모든 프로젝트가 동일한 버전의 패키지를 사용하는지 확인하십시오.Visual Studio의 NuGet 패키지 매니저를 열면 스크린샷에 표시된 솔루션과 같이
" " " " 가 됩니다.consolidate
맨 위에 있는 탭을 클릭합니다.버전이 충돌하는 경우 왼쪽에 NuGet 패키지의 lisr=t가 표시됩니다.만약 그렇다면 그것은 당신에게 갈등이 있다는 것을 의미합니다.임의의 패키지를 클릭하면 다음 스크린샷과 같이 우측에 솔루션 프로젝트 목록이 표시됩니다.
이 예(스크린샷)에서는 Microsoft 버전이 2개 있습니다.Net.Sdk.3.0.13 및 3.0.11과 함께 기능합니다.원하는 버전을 선택하고 설치를 클릭하면 두 프로젝트가 동일한 버전으로 업데이트됩니다.변경 및 개발 빌드를 다시 푸시하여 즐기십시오.
API와 Hangfire 두 가지 프로젝트가 있습니다.중복은 API와 Hangfire 프로젝트를 모두 사용하기 때문에 Hangfire를 퍼블리싱하고 있었고 퍼블리싱 스텝 전에 앱 설정 파일을 삭제하여 해결했습니다.
COPY . .
RUN find ${API} -iname "appsettings*.json" -exec rm {} \;
RUN dotnet publish ${HANGFIRE}/*.csproj --configuration Release --output out --no-restore
마이크로소프트를 설정함으로써 해결할 수 있었습니다.NET.ConflictResolution.targets 파일은 <NetsdkErrorCondition='$(_ResolvedFileToPublishContainsDuplicates)' == 'false' " <= 원래 참이었습니다.
이 파일은 "\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft"에 있습니다.NET.Sdk\targets"
언급URL : https://stackoverflow.com/questions/69919664/publish-error-found-multiple-publish-output-files-with-the-same-relative-path
'source' 카테고리의 다른 글
기본 클래스의 멤버에 액세스하는 중 (0) | 2023.03.05 |
---|---|
Create-react-app - 플러그인 "react"의 오류 ".eslintrc.json"과 "BaseConfig" 간에 충돌했습니다. (0) | 2023.03.05 |
ng-repeat 및 nested 루프가 있는 행 추가 (0) | 2023.03.05 |
오류 '디지털 봉투 루틴', 이유: '지원되지 않음', 코드: 'ERR_OSSL_EVP_'를 받는 중지원되지 않음' (0) | 2023.03.05 |
Oracle SQL: Select Statement와 함께 시퀀스 삽입 사용 (0) | 2023.03.05 |