.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包安装过程

安装后报错信息

内容的提问来源于stack exchange,提问作者Sandeep Bhat
相关产品推荐
相关产品推荐

