Можно ли вложить файлы в Обозреватель решений 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 51

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>