Как основной проект .net знает, какие файлы включать при сборке - PullRequest
0 голосов
/ 11 мая 2018

Я заметил, что есть разница в файле .csproj в стандарте .Net и .Net Core.
В проектах .Net все файлы (.cs,.js etc) были включены в файл .csproj для каждого проекта.Например:

<Compile Include="ViewModel\LiveViewViewModel.cs" />
<Compile Include="ViewModel\RegistrationViewModel.cs" />
<Compile Include="Views\LiveView.xaml.cs">
  <DependentUpon>LiveView.xaml</DependentUpon>
</Compile>

Но если я увижу новый файл .Net Core .csproj, там не будет упоминания ни о .cs/.js, ни о каком-либо файле.
Мне очень любопытно понять, как это происходит.Во время компиляции проекты net core включают файлы.

1 Ответ

0 голосов
/ 11 мая 2018

Они теперь поступают из файлов определений msbuild, импортированных через Microsoft.NET.Sdk MSBuild sdk, и используют подстановочные знаки для указания шаблона поиска на основе местоположения файла проекта.

(упрощенный) эквивалент будет, если вы написали

<Compile Include="**\*.cs" />

в файл проекта, который долгое время поддерживался msbulid, но плохо работал с инструментами Visual Studio.Новая система проекта может гораздо лучше справляться с подстановочными знаками, а затем добавить соответствующее определение <Compile Remove".."/> или Update="..", если вы исключите некоторые файлы или измените метаданные в окнах свойств.

Исходный код для элементов по умолчанию будетнайдено здесь , а также некоторые дополнительные определения, введенные web-sdk для проектов ASP.NET Core здесь .

...