Я работаю с ядром dotnet csproj, и я добавил новый файл. Первоначально он вообще не добавляется в csproj из-за соглашения, а не конфигурации. Но как только я изменяю действие сборки с None на Embedded, в файл csproj записываются две записи:
<None Remove = "MyFile.sql" />
а также
<EmbeddedResource Include = "MyFile.sql" />
Что означает эта первая запись? Мне это кажется лишним.





У проектов в стиле SDK есть несколько автоматических включений.
По умолчанию в sdk есть что-то вроде <None Include = "**/*"> (упрощенное), которое добавляется (включается) перед содержимым вашего проекта. Но вы не хотите, чтобы ваш файл был в наборе «None», а был в наборе «EmbeddedResource».
MSBuild не имеет проблем с файлами, находящимися в более чем одной группе элементов, но он должен быть только в одной, чтобы IDE не запутались (и отображать файл только один раз, чтобы показать правильное действие сборки).
Таким образом, два оператора означают «удалить его из набора None (элементы) и добавить его в набор EmbeddedResource (элементы)».
Думаю, мы никогда не узнаем ...
Я не вижу разницы с удалением или без него в моем csproj -
<None Remove = "testJson\**\*.json" />, что мне ожидать? Я использую Rider в качестве своей IDE.