msbuild - studio - ¿Se pueden anidar archivos en VS2017 Solution Explorer para proyectos de.NET Core(no ASP.NET Core)?
install package no se encuentra el proyecto default (4)
En Visual Studio 2019, tengo un proyecto .NET Core 2.2
<Project Sdk="Microsoft.NET.Sdk">
en el que quería los archivos appsettings.json / appsettings.Development.json bien anidados, al igual que lo hacen automáticamente para
<Project Sdk="Microsoft.NET.Sdk.Web">
proyectos.
Esto es lo que tuve que agregar al .CSPROJ:
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="appsettings.Development.json">
<DependentUpon>appsettings.json</DependentUpon>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
Después de eso, tuve que descargar / volver a cargar el proyecto para que el cambio surta efecto en el Explorador de soluciones. Tenga en cuenta que también configuro estos archivos para que siempre se copien en el directorio de salida.
En los proyectos de MSBuild de la "vieja escuela", como los formularios Windows Forms todavía utilizan en VS2017, por ejemplo, los archivos podrían "anidarse" a través de un elemento
DependentUpon
en el archivo csproj.
Utilicé esto para agrupar pruebas unitarias en Noda Time, por ejemplo
<Compile Include="LocalDateTest.PeriodArithmetic.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
Eso condujo a pruebas fácilmente navegables:
A sabiendas "perdí" esta característica cuando me
project.json
a
project.json
para .NET Core, pero esperaba que volviera al convertir a MSBuild.
Sin embargo, parece que los proyectos de MSBuild basados en .NET Core SDK (elemento raíz
<Project Sdk="Microsoft.NET.Sdk">
) no reciben el mismo tratamiento en Visual Studio 2017, incluso si se agrega un
ItemGroup
manualmente con los mismos elementos que el proyecto de la "vieja escuela".
Los proyectos ASP.NET Core reciben anidamiento automático para CSS y Javascript minificados, pero no está claro cómo aplicar eso a C # en los proyectos de biblioteca .NET Core.
Lo tengo trabajando en uno de mis proyectos de estilo
Microsoft.NET.Sdk
usando algo similar a lo siguiente:
<ItemGroup>
<Compile Update="LocalDateTest.*.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
</ItemGroup>
El truco aquí es usar
Update
lugar de
Include
.
Esto se debe a que los elementos implícitos provienen de un archivo de accesorios importado antes del proyecto principal.
Una
Include
adicional no afectará a los archivos que ya están incluidos, pero se pueden modificar con la
Update
.
Si usa .netstandardx.x, no puede usar NestedIn . No funciona.
Puede hacerlo manualmente en su .csproj
<ItemGroup><Compile Include="BaseClass">ChildClass.cs</Compile></ItemGroup>
Si usa el mismo prefijo, anidará los archivos automáticamente.
Ejemplo:
AsemblyInfo.cs
AsemblyInfo.local.cs