답변:
빌드 조치 특성 에 대한 MSDN 기사에서 차이점을 설명합니다.
없음 -파일이 프로젝트 출력 그룹에 포함되지 않으며 빌드 프로세스에서 컴파일되지 않습니다. Readme 파일과 같은 설명서가 포함 된 텍스트 파일이 그 예입니다.
컨텐츠 -파일이 컴파일되지 않았지만 컨텐츠 출력 그룹에 포함됩니다. 예를 들어이 설정은 .htm 또는 다른 종류의 웹 파일에 대한 기본값입니다.
100 % 확실하지는 않지만 ( Build Action 속성에 대한 MSDN 설명을 읽음 ) MSDN에서 StackOverflow로 해당 답변을 복사해도 질문에 완전히 대답하지 못합니다.
없음 과 내용 의 차이는 웹 프로젝트에만 영향을 미칩니다. 커맨드 라인 프로젝트의 경우 WinForm 프로젝트 또는 UnitTest 프로젝트 (필자의 경우) 등 없음 및 내용 에는 다른 동작이 없습니다.
MSDN : "프로젝트 출력 그룹"또는 "컨텐츠 출력 그룹"은 웹 프로젝트에 사용 된 용어 만입니까?
None
vs 는 빌드 단계가 아닌 게시 단계 Content
에만 영향을 미칩니다 . 빌드 단계의 경우 어느 쪽이든 설정할 수 있으며 빌드 단계 에서 파일을 복사할지 여부를 제어합니다. 또한 기본적으로 T4 템플릿이 항목이 아닌 항목 으로 추가되는 것이 이상 합니다. CopyToOutputDirectory
Content
None
내 상황에서 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>
내 프로젝트가 잘 구축되는 동안 왜 에 내 유형 Content
및 None
요소 유형 이 혼합되어 있는지 궁금해 했습니다 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" />
빌드 서버에서도 작동했습니다.
필자의 경우 .Pubxml 은 없음 목록 중 해당 파일 중 하나입니다 . 솔루션 빌드 또는 웹 프로젝트의 정적 파일을 의미하지 않습니다. 그러나 사이트를 Azure에 게시하기 위해 구성이 여기에 있습니다.
Microsoft 기사에 따르면 .csproj 파일 태그 중 주요 유형은 다음과 같습니다.
없음-파일이 프로젝트 출력 그룹에 포함되지 않으며 빌드 프로세스에서 컴파일되지 않습니다. Readme 파일과 같은 설명서가 포함 된 텍스트 파일이 그 예입니다.
컴파일-파일이 빌드 출력으로 컴파일됩니다. 이 설정은 코드 파일에 사용됩니다.
컨텐츠-파일이 컴파일되지 않았지만 컨텐츠 출력 그룹에 포함됩니다. 예를 들어이 설정은 .htm 또는 다른 종류의 웹 파일에 대한 기본값입니다.
포함 된 리소스-이 파일은 기본 프로젝트 빌드 출력에 DLL 또는 실행 파일로 포함됩니다. 일반적으로 리소스 파일에 사용됩니다.
컨텐츠 파일은 빌드에 포함되지 않지만 공개에는 포함됩니다.
사용자 가 그렇게 구성하지 않은 파일은 빌드 또는 게시에 포함되지 않습니다. 예를 들어 "항상"또는 "최신"의 "출력 디렉토리에 복사"설정은 빌드 및 게시에 모두 포함됩니다.
Content
s로 변경되었습니다None
. Razor로 변환 할 때 파일의 이름을 .ascx에서 .cshtml로 변경했을 때 발생했다고 생각합니다. 다시 수동으로 변경하면 몇 가지 배포 문제가 해결되었습니다. 다행 이네요.