예를 들어 VS2017의 Windows Forms에서 여전히 사용되는 “오래된 학교”MSBuild 프로젝트에서 파일은 DependentUpon
csproj 파일 의 항목을 통해 “중첩”될 수 있습니다 .
나는 이것을 Noda Time에서 함께 단위 테스트를 그룹화하는 데 사용했습니다.
<Compile Include="LocalDateTest.PeriodArithmetic.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
이로 인해 쉽게 탐색 할 수있는 테스트가 이루어졌습니다.
project.json
.NET Core로 이동할 때 고의로이 기능을 “잃어 버렸지 만” MSBuild로 변환 할 때 반환되기를 바랐습니다. 그러나 .NET Core SDK (root element <Project Sdk="Microsoft.NET.Sdk">
)를 기반으로하는 MSBuild 프로젝트 ItemGroup
는 “old school”프로젝트와 동일한 요소를 사용하여 수동으로 추가 된 경우에도 Visual Studio 2017에서 동일한 처리를받지 못하는 것처럼 보입니다 .
ASP.NET Core 프로젝트는 축소 된 CSS 및 Javascript에 대한 자동 중첩을 수신하지만이를 .NET Core 라이브러리 프로젝트의 C #에 적용하는 방법은 명확하지 않습니다.
답변
Microsoft.NET.Sdk
다음과 유사한 것을 사용하여 내 스타일의 프로젝트 중 하나에서 작업하고 있습니다 .
<ItemGroup>
<Compile Update="LocalDateTest.*.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
</ItemGroup>
여기서 트릭 Update
은 Include
. 이는 암시 적 항목이 기본 프로젝트 이전에 가져온 props 파일에서 가져 오기 때문입니다. 추가 항목 Include
은 이미 포함 된 파일에 영향을주지 않지만을 사용하여 수정할 수 있습니다 Update
.
답변
Visual Studio 2019에는 <Project Sdk="Microsoft.NET.Sdk">
프로젝트에서 자동으로 수행하는 것처럼 멋지게 중첩 된 appsettings.json / appsettings.Development.json 파일 이 필요한 .NET Core 2.2 프로젝트가 <Project Sdk="Microsoft.NET.Sdk.Web">
있습니다.
.CSPROJ에 추가해야하는 내용은 다음과 같습니다.
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="appsettings.Development.json">
<DependentUpon>appsettings.json</DependentUpon>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
그 후 솔루션 탐색기에서 변경 사항을 적용하려면 프로젝트를 언로드 / 다시로드해야했습니다. 또한 이러한 파일이 항상 출력 디렉토리에 복사되도록 설정했습니다.
답변
각 항목을 직접 만드는 대신 와일드 카드를 사용하려는 경우 이러한 줄을 .csproj 파일에 추가하면 Foo.tests.cs 와 같은 항목이 자동으로 Foo.cs 아래에 중첩됩니다 .
.NET Core 3.1.0을 사용하여 VS2019에서 테스트 및 작업
<ItemGroup>
<Compile Update="**\*.tests.cs">
<DependentUpon>$([System.String]::Copy(%(Filename)).Replace(".tests",".cs"))</DependentUpon>
</Compile>
</ItemGroup>
답변
당신이 사용하는 경우 .netstandardx.x 당신은 사용할 수 없습니다 NestedIn을 . 작동하지 않습니다.
.csproj에서 수동으로 수행 할 수 있습니다.
<ItemGroup><Compile Include="BaseClass">ChildClass.cs</Compile></ItemGroup>
답변
동일한 접두사를 사용하면 파일이 자동으로 중첩됩니다.
예:
AsemblyInfo.cs
AsemblyInfo.local.cs