.csproj 파일에서 <None Include =“…”>는 무엇입니까?


137

어때

<None Include="C:\foo.bar" />

와 다른

<Content Include="C:\foo.bar" />

?


7
나는 Contents로 변경되었습니다 None. Razor로 변환 할 때 파일의 이름을 .ascx에서 .cshtml로 변경했을 때 발생했다고 생각합니다. 다시 수동으로 변경하면 몇 가지 배포 문제가 해결되었습니다. 다행 이네요.
Chris

답변:


135

빌드 조치 특성 에 대한 MSDN 기사에서 차이점을 설명합니다.

없음 -파일이 프로젝트 출력 그룹에 포함되지 않으며 빌드 프로세스에서 컴파일되지 않습니다. Readme 파일과 같은 설명서가 포함 된 텍스트 파일이 그 예입니다.

컨텐츠 -파일이 컴파일되지 않았지만 컨텐츠 출력 그룹에 포함됩니다. 예를 들어이 설정은 .htm 또는 다른 종류의 웹 파일에 대한 기본값입니다.


5
감사합니다.이 참조를 찾는 데 문제가있었습니다.
Emmett

도움이 되긴하지만 파일이 출력에 포함되지 않으면 왜 "없음"항목이 있습니까? 점은 무엇인가?
JimH44

1
@ JimH44 <None> 항목은 기본적으로 출력 그룹 없더라도 파일을 출력 디렉토리에 복사하는 데 종종 사용됩니다 . <없음> 파일에 대해 "출력 디렉토리에 복사"-> "항상 복사"를 선택하면 파일이 복사되고 프로젝트의 .csproj 파일에 추가 된 항목에 <없음> 항목이 표시됩니다 파일.
눈에 띄는 컴파일러

3
그렇다면 "출력 디렉터리에 복사"-> "항상 복사"가있는 <없음> 파일과 "출력 디렉터리에 복사"-> "항상 복사"가있는 <콘텐츠> 파일의 차이점은 무엇입니까?
해시 테이블

30

한 가지 차이점은 게시 방법입니다. "없음"항목은 게시에 포함되지 않으며 "콘텐츠"항목은 포함되지 않습니다. 예를 들어 게시 탭의 "응용 프로그램 파일"대화 상자에서.


8
사실이 아니다. 적어도 새로운 닷넷 클리닉에서. CopyToOutputDirectory세트 가있는 없음으로 선언 된 항목이있는 경우 항목 truedotnet publish
disclosr에

13

100 % 확실하지는 않지만 ( Build Action 속성에 대한 MSDN 설명을 읽음 ) MSDN에서 StackOverflow로 해당 답변을 복사해도 질문에 완전히 대답하지 못합니다.

없음내용 의 차이는 웹 프로젝트에만 영향을 미칩니다. 커맨드 라인 프로젝트의 경우 WinForm 프로젝트 또는 UnitTest 프로젝트 (필자의 경우) 등 없음내용 에는 다른 동작이 없습니다.

MSDN : "프로젝트 출력 그룹"또는 "컨텐츠 출력 그룹"은 웹 프로젝트에 사용 된 용어 만입니까?


2
당신이 말했듯이, Nonevs 는 빌드 단계가 아닌 게시 단계 Content에만 영향을 미칩니다 . 빌드 단계의 경우 어느 쪽이든 설정할 수 있으며 빌드 단계 에서 파일을 복사할지 여부를 제어합니다. 또한 기본적으로 T4 템플릿이 항목이 아닌 항목 으로 추가되는 것이 이상 합니다. CopyToOutputDirectoryContentNone
Christopher King

8

내 상황에서 MSBuild 파일에는 ItemGroup다음과 같은 이미지 리소스가 있습니다.

  <ItemGroup>
    <Content Include="Resources\image001.png" />
    <Content Include="Resources\image002.png" />
    <Content Include="Resources\image003.png" />
    <Content Include="Resources\image004.png" />
    <None Include="Resources\image005.png" />
    <None Include="Resources\image006.png" />
    <None Include="Resources\image007.png" />
  </ItemGroup>

내 프로젝트가 잘 구축되는 동안 왜 에 내 유형 ContentNone요소 유형 이 혼합되어 있는지 궁금해 했습니다 ItemGroup. 이 MSDN 기사 (Visual Studio 2010)는 내가 찾던 지침을 제공했습니다.

리소스 편집기는 이미지를 추가 할 때 .resx 파일이 이미지 파일을 참조하므로 빌드 작업없음으로 설정 합니다. 빌드시 이미지는 .resx 파일에서 작성된 .resources 파일로 가져옵니다. 그런 다음 .resx 파일에 대해 자동으로 생성 된 강력한 클래스를 통해 이미지에 쉽게 액세스 할 수 있습니다. 따라서이 설정을 어셈블리에 이미지가 두 번 포함 시키므로이 설정을 Embedded Resource로 변경해서는 안됩니다 .

해결 : 이 지침을 사용하여 텍스트 편집기를 사용하여 Content항목 유형 요소를로 변경 했습니다 None.

또한 MSBuild 항목에 대한 개요는이 MSDN 문서를 참조하십시오 .


3

컴파일 가능한 항목이없는 프로젝트가 있습니다 (재스민 단위 테스트를 위해 html 및 javascript를 저장합니다).

어느 날 내 프로젝트 (이 프로젝트를 포함하고 있음)는 "프로젝트에 대상"빌드 "가 존재하지 않는다"고 컴파일을 중단했습니다.

컴파일러를 가져 오기 위해 가져 오기를 추가했는데 내 컴퓨터에서는 제대로 작동했지만 빌드 서버에서 msbuild를 사용하지 못했습니다.

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

그런 다음 줄을 변경했습니다.

<None Include="SpecRunner.html" />

<Content Include="SpecRunner.html" />

빌드 서버에서도 작동했습니다.


2

.vstemplate에 정의한 파일을 포함하려면 템플릿 프로젝트 파일에 None이 필요합니다. 그렇지 않으면 작성 및 변환 프로세스에서 손실됩니다. 모든 것을 빌드하는 데 사용하는 temp 폴더에 남겨두고 곧 삭제됩니다.


1

필자의 경우 .Pubxml없음 목록 중 해당 파일 중 하나입니다 . 솔루션 빌드 또는 웹 프로젝트의 정적 파일을 의미하지 않습니다. 그러나 사이트를 Azure에 게시하기 위해 구성이 여기에 있습니다.

Microsoft 기사에 따르면 .csproj 파일 태그 중 주요 유형은 다음과 같습니다.

없음-파일이 프로젝트 출력 그룹에 포함되지 않으며 빌드 프로세스에서 컴파일되지 않습니다. Readme 파일과 같은 설명서가 포함 된 텍스트 파일이 그 예입니다.

컴파일-파일이 빌드 출력으로 컴파일됩니다. 이 설정은 코드 파일에 사용됩니다.

컨텐츠-파일이 컴파일되지 않았지만 컨텐츠 출력 그룹에 포함됩니다. 예를 들어이 설정은 .htm 또는 다른 종류의 웹 파일에 대한 기본값입니다.

포함 된 리소스-이 파일은 기본 프로젝트 빌드 출력에 DLL 또는 실행 파일로 포함됩니다. 일반적으로 리소스 파일에 사용됩니다.


1
뭔가 오해의 소지가 있거나 명확하지 않은 경우 여기에 의견을 적어주십시오. 미리 감사드립니다.
krishna kanth

1
"Properties \ PublishProfiles \ FolderProfile.pubxml"포함에 대한 "없음"요소 이름은 "콘텐츠"여야합니다. Bamboo의 Asp.Net 프로젝트에서 빌드를 다시 실행하면 문제를 해결할 수 있으므로 문제가 무엇인지 정확히 모릅니다
Bochen Lin

안녕하세요 @BochenLin, 여기에 언급 한 세부 사항은 약간 부족합니다. 여기에 자세한 내용을 제공하거나 가능한 경우 전체 문제 세부 사항 및 스크린 샷으로 새 질문을 게시 할 수 있습니까?
krishna kanth

0

컨텐츠 파일은 빌드에 포함되지 않지만 공개에는 포함됩니다.

사용자 가 그렇게 구성하지 않은 파일은 빌드 또는 게시에 포함되지 않습니다. 예를 들어 "항상"또는 "최신"의 "출력 디렉토리에 복사"설정은 빌드 및 게시에 모두 포함됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.