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

.NET Framework项目引用仅含二进制NuGet包的最优方式

NuGet包在.NET Framework项目中引用System.Diagnostics.Process时出现循环类型转发错误

我通过nuget pack命令打包了一个NuGet包,包内是从.NET 8项目发布的二进制文件,本质是一个供其他工具调用的身份验证工具。在.NET项目中通过Visual Studio的NuGet包管理器使用该包时一切正常,但在.NET Framework项目中安装后,部分引用(如System.Diagnostics.Process)无法正常工作,报错信息如下:

The type forwarder for type 'System.Diagnostics.Process' in assembly 'System.Diagnostics.Process' causes a cycle

我目前想到两种解决思路:

  • 不使用Visual Studio的NuGet包管理器,改用预构建脚本将NuGet包安装到指定文件夹,消费工具直接引用该文件夹中的工具文件
  • 以单文件方式发布自包含应用(但此方式会导致文件体积过大,尽量不想采用)

我查阅了多个技术论坛,但未找到针对仅包含二进制文件、无额外依赖引用的NuGet包的最佳实践,希望了解是否有其他可行的解决方案,或是我遗漏了某些关键配置点。


相关文件与截图

Nuspec文件

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>Authentication.App</id>
    <version>1.0.0</version>
    <title>Authentication App</title>
    <authors>XXX</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <projectUrl>https://github.com</projectUrl>
    <description>Authentication app for authenticating user.</description>
    <copyright>XXX</copyright>
    <tags>authentication app</tags>
    <contentFiles>
      <files include="any/any/Authentication.App/**/*" buildAction="Content" copyToOutput="true" flatten="false" />
    </contentFiles>
  </metadata>
  <files>
    <file src="publish\**\*" exclude="**\*.pdb" target="contentFiles\any\any\Authentication.App" />
    <file src="publish\**\*" exclude="**\*.pdb" target="content\net472\Authentication.App" />
  </files>
</package>

身份验证工具发布文件夹

身份验证工具发布文件夹截图

NuGet包结构

NuGet包结构截图

NuGet包安装过程

NuGet包安装过程截图

安装后报错信息

安装后报错信息截图


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:26:17