System.NotSupportedException в TaskScheduler при использовании PublishTrimmed .NET6.0
Я хочу использовать TaskScheduler, используя «Библиотеку типов TaskScheduler 1.1» из «Добавить ссылку COM».
using TaskScheduler;
...
ITaskService taskservice = null;
taskservice = new TaskScheduler.TaskScheduler(); <=NotSupportedException
taskservice.Connect(null, null, null, null);
Но приведенный выше код вызовет исключение.
System.NotSupportedException: 'Встроенный COM был отключен с помощью переключателя функций. См. Https://aka.ms/dotnet-illink/com для получения дополнительной информации.
Если для параметра PublishTrimmed установлено значение false, исключение не возникает. Однако я не хочу устанавливать для него значение false, потому что это увеличит размер exe.
файл проекта следующий
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>false</SelfContained>
<PublishTrimmed>true</PublishTrimmed>
</PropertyGroup>
Пытаюсь добавить сборку в TrimmerRootAssembly. Но следующее не работает.
<ItemGroup>
<TrimmerRootAssembly Include="TaskScheduler" />
<TrimmerRootAssembly Include="Microsoft.Win32.TaskScheduler" />
</ItemGroup>
1 ответ
Похоже, обрезка с помощью COM-ссылок отключена по умолчанию из-за возможных проблем.
Вы можете повторно включить его, добавив
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
на ваш
PropertyGroup
в вашем файле csproj.
Вы также можете использовать ComWrappers, чтобы получить правильное решение для взаимодействия AOT в .NET 5 — https://docs.microsoft.com/en-us/dotnet/standard/native-interop/tutorial-comwrappers .