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

어때

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

와 다른

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

?



답변

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

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

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


답변

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


답변

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

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

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


답변

내 상황에서 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 문서를 참조하십시오 .


답변

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

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

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

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

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

<None Include="SpecRunner.html" />

<Content Include="SpecRunner.html" />

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


답변

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


답변

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

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

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

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

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

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