Я получил сборку, содержащую только классы * stati c с константами
public static class C {
public const int Value = 123;
}
Я использую эту сборку в разных приложениях, она помечена CopyLocal = false
и не развернута.
Это работает для netframework
приложений, но для netcoreapp
Я получаю сообщение об ошибке, в котором говорится, что сборка не найдена.
Сборка не указана в скомпилированном коде (проверено с помощью ildasm
), но есть все еще является ссылкой в файле .deps.json
.
Нужно ли развертывать сборку с основными приложениями или есть параметры для ее исключения из файла .deps.json
?
(Большинство из моих сетевых приложений - только небольшие исполняемые файлы, поэтому, казалось, нет необходимости включать в развертывание сборку размером в несколько мегабайт, не используемую. Основное приложение большое и многофайловое с самого начала, поэтому это не имеет значения)
Редактировать : обнаружена проблема. На самом деле в сборке не было CopyLocal = false
. Он использовал файл .targets, чтобы удалить его во время сборки
<Target Name="PreventConstantsCopyLocal" AfterTargets="ResolveReferences">
<ItemGroup>
<ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)"
Condition="'%(ReferenceCopyLocalPaths.NuGetPackageId)' == 'MyConstants'" />
</ItemGroup>
</Target>
Я просто добавил дополнительное условие
And ('%(MSBuildRuntimeType)' == '' Or '%(MSBuildRuntimeType)' == 'Full')
, чтобы константы копировались в выходные данные в сборках ядра.