C# Winform 安装程序:安装后的 exe 下载 .NET 3.5 Framework
C# Winform Setup: Installed exe downloads .NET 3.5 Framework after setup
我有一个 C# WinForms 应用程序,使用 Visual Studio 2019 设置模板创建设置。该应用程序是为 .NET 4.6.2 创建的,安装项目中的框架先决条件和启动条件也是 4.6.2。这个设置工作了很多年。我使用最新更新在全新 Win10 安装上测试每个更新。
现在有一段时间(~2 或 3 个月),会发生以下情况。安装程序按预期运行并安装应用程序没有任何问题。但是现在,当我在安装完成后启动 exe 时,.NET 3.5 框架会自动下载。这以前从未发生过,作为副作用,我的应用程序在 3.5 下载和安装完成后被锁定在任务管理器中。
由于设置始终相同,只有 exe 发生变化,有时会添加一些 3rd 方 DLL 的更新版本,我认为 Windows 方面一定发生了某些变化(可能 3.5 不存在不再使用最新的 Win10 版本)。
但我的问题是:如何确定哪个组件或 DLL 需要 3.5 框架?
是否有任何免费软件可用于检查我的项目是否存在 3.5 依赖项?
谢谢!
除了查看每个 DLL 的文档外,您还可以使用 System.Reflection 中的一些方法。但是,这里有一种非编程方式来查看 .NET DLL 使用的是哪个版本的 .NET。
- 下载并安装 Windows 10 SDK(如果尚未安装):https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
注意:SDK 可以在 %ProgramFiles(x86)%\Microsoft SDKs\Windows\
中找到(例如:C:\Program Files (x86)\Microsoft SDKs\Windows)
我们将使用 ildasm.exe
,它可以在以下一个或多个位置找到(前提是 SDK 安装在默认位置):
赢 10:
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\x64
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\x64
...
Win 8.1:
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64
Win 7:
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\x64
运行 ildasm.exe
- 双击
ildasm.exe
到 运行(或打开 cmd
window 并输入 ildasm.exe
)
- 单击文件
- Select 打开
- 选择您的 DLL 文件(例如:TestDLL35.dll)
- 双击 MANIFEST 以在新的 window
中打开它
您会看到如下内容:
当您看到:.assembly extern <name>
(例如:.assembly extern mscorlib
或 .assembly extern System.Xml.Linq
)时,请在大括号内查找 .ver
。这是该库的 .NET 版本(例如:3:5:0:0)
资源:
- Which version of the .Net framework is my assembly actually running?
- Microsoft .NET Framework 3.5 Deployment Considerations
我有一个 C# WinForms 应用程序,使用 Visual Studio 2019 设置模板创建设置。该应用程序是为 .NET 4.6.2 创建的,安装项目中的框架先决条件和启动条件也是 4.6.2。这个设置工作了很多年。我使用最新更新在全新 Win10 安装上测试每个更新。
现在有一段时间(~2 或 3 个月),会发生以下情况。安装程序按预期运行并安装应用程序没有任何问题。但是现在,当我在安装完成后启动 exe 时,.NET 3.5 框架会自动下载。这以前从未发生过,作为副作用,我的应用程序在 3.5 下载和安装完成后被锁定在任务管理器中。
由于设置始终相同,只有 exe 发生变化,有时会添加一些 3rd 方 DLL 的更新版本,我认为 Windows 方面一定发生了某些变化(可能 3.5 不存在不再使用最新的 Win10 版本)。
但我的问题是:如何确定哪个组件或 DLL 需要 3.5 框架?
是否有任何免费软件可用于检查我的项目是否存在 3.5 依赖项?
谢谢!
除了查看每个 DLL 的文档外,您还可以使用 System.Reflection 中的一些方法。但是,这里有一种非编程方式来查看 .NET DLL 使用的是哪个版本的 .NET。
- 下载并安装 Windows 10 SDK(如果尚未安装):https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/
注意:SDK 可以在 %ProgramFiles(x86)%\Microsoft SDKs\Windows\
中找到(例如:C:\Program Files (x86)\Microsoft SDKs\Windows)
我们将使用 ildasm.exe
,它可以在以下一个或多个位置找到(前提是 SDK 安装在默认位置):
赢 10:
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\x64
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools\x64 ...
Win 8.1:
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\x64
Win 7:
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 工具
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\
- `%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\x64
运行 ildasm.exe
- 双击
ildasm.exe
到 运行(或打开cmd
window 并输入ildasm.exe
) - 单击文件
- Select 打开
- 选择您的 DLL 文件(例如:TestDLL35.dll)
- 双击 MANIFEST 以在新的 window 中打开它
您会看到如下内容:
当您看到:.assembly extern <name>
(例如:.assembly extern mscorlib
或 .assembly extern System.Xml.Linq
)时,请在大括号内查找 .ver
。这是该库的 .NET 版本(例如:3:5:0:0)
资源:
- Which version of the .Net framework is my assembly actually running?
- Microsoft .NET Framework 3.5 Deployment Considerations