You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET6开启PublishTrimmed调用TaskScheduler COM库报NotSupportedException如何解决

问题根因

开启PublishTrimmed配置后,.NET默认会关闭内置COM互操作支持,和引用的程序集是否被裁剪无关,因此添加TrimmerRootAssembly配置无法解决该问题。


解决方案

方案1:显式开启内置COM互操作支持(推荐)

不需要关闭PublishTrimmed,对最终exe体积影响极小,仅需要在项目的PropertyGroup节点中添加如下配置即可:

<PropertyGroup>
    <!-- 原有配置保持不变 -->
    <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
</PropertyGroup>

添加配置后重新编译发布,即可正常初始化TaskScheduler COM对象。

方案2:手动生成互操作程序集

如果方案1仍不生效,可手动生成TaskScheduler的互操作程序集适配裁剪规则:

  1. 找到系统下的taskschd.dll文件(默认路径为C:\Windows\System32\taskschd.dll)
  2. 执行命令生成互操作程序集:tlbimp taskschd.dll /out:TaskScheduler.Interop.dll
  3. 将生成的TaskScheduler.Interop.dll引入项目,再添加裁剪保留配置:
<ItemGroup>
    <TrimmerRootAssembly Include="TaskScheduler.Interop" />
</ItemGroup>

方案3:无COM依赖实现

如果希望完全规避COM互操作的裁剪兼容问题,可以直接调用Windows内置的schtasks命令行工具实现计划任务的增删改查操作,不需要任何额外依赖,天然适配裁剪配置。


内容的提问来源于stack exchange,提问作者stack_user

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 00:06:00