Можно ли вложить файлы в Обозреватель решений VS2017 for.NET ядро (non-ASP.NET основные) проекты?
в проектах MSBuild "старой школы" - как все еще используется Windows Forms в VS2017 например-файлы могут быть" вложенными " через DependentUpon
элемент в файле csproj.
я использовал это для группирования модульных тестов вместе во время Noda, например
<Compile Include="LocalDateTest.PeriodArithmetic.cs">
<DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>
, что привело к легко управляемым тесты:
Я сознательно "потерял" эту функцию при переходе к project.json
для .NET Core, но надеялся, что он вернется при преобразовании в MSBuild. Однако, это похоже на MSBuild проекты, основанные на .NET Core SDK (root element <Project Sdk="Microsoft.NET.Sdk">
) не получить то же самое лечение в Visual Studio 2017, даже если ItemGroup
добавляется вручную с теми же элементами, что и проект "Старая школа".
ASP.NET основные проекты получают автоматическое вложение для минифицированных CSS и Javascript, но неясно, как применить это к C# в проектах библиотеки .NET Core.
3 ответа:
у меня он работает в одном из моих
Microsoft.NET.Sdk
- стиль проектов с использованием чего-то похожего на следующее:<ItemGroup> <Compile Update="LocalDateTest.*.cs"> <DependentUpon>LocalDateTest.cs</DependentUpon> </Compile> </ItemGroup>
трюк здесь заключается в использовании
Update
вместоInclude
. Это связано с тем, что неявные элементы поступают из файла реквизитов, который импортируется перед основным проектом. ДополнительныйInclude
не влияет на файлы, которые уже включены, но они могут быть изменены с помощьюUpdate
.
Если вы используете тот же префикс, он автоматически вложит файлы.
пример:
AsemblyInfo.cs AsemblyInfo.local.cs
Если вы используете .netstandardx.x вы не можете использовать NestedIn . Это не работает.
вы можете сделать это вручную в ваш .csproj
<ItemGroup><Compile Include="BaseClass">ChildClass.cs</Compile></ItemGroup>