引用程序集没有强名称解决办法

为项目添加强名称方法:
1.右键单击项目,打开属性窗口;
2.在属性窗口里选择《签名》标签,选中为程序集签名的选项,在下拉列表里选择新建,如下图所示:

3.打开新建签名窗口,输入签名的名称密码等内容,
单击确定后,签名添加完成。

 
为没有源码的DLL文件添加强名称
 
如果项目中引用了其他没有源码的dll文件,并且此dll文件是没有强名称的程序集,则编译时会出现类似 "Assembly generation failed -- 引用的程序集 'xxxxxxxxxxx' 没有强名称" 这样的错误。
我这里引用的是Interop.Scripting.dll程序集,它不是强名称的,则需要进行以下操作:
1.打开SDK 命令提示窗口;

 


2.创建一个新的随机密钥对:
sn -k Interop.Scripting.snk
3.反编译目标程序集
ildasm Interop.Scripting.dll /out=Interop.Scripting.il
3.重新编译,附带强命名参数
ilasm Interop.Scripting.il /dll /resource=Interop.Scripting.res /key=Interop.Scripting.snk /optimize
4.验证签名信息
sn -v Interop.Scripting.dll

OK,将生成的dll文件重新引入到项目中然后编译。
### WindowsBase 和 PresentationCore 程序集的使用说明 #### 什么是 WindowsBase? `WindowsBase` 是 .NET Framework 中的一个核心程序集,它提供了支持 WPF(Windows Presentation Foundation)和其他 UI 技术的基础功能。该程序集中包含了诸如 `DispatcherObject`、`DependencyObject` 和 `Freezable` 这样的基础类,这些类构成了 WPF 应用程序的核心架构[^1]。 #### 什么是 PresentationCore? `PresentationCore` 是另一个重要的 WPF 程序集,主要负责定义与图形和媒体相关的类型。其中包括 `Visual` 类及其子类,用于表示可视对象;还包括 `UIElement` 和 `FrameworkElement`,这是 WPF 用户界面层次结构中的关键基类[^3]。 #### 如何在项目中使用这两个程序集? 要在基于 .NET Framework 的项目中使用 `WindowsBase` 和 `PresentationCore`,需要确保项目的引用列表中显式包含这两个程序集。如果缺少必要的引用,则可能会遇到类似于 “Project file must include the .NET Framework assembly ‘WindowsBase, PresentationCore’” 的错误消息[^2]。 以下是具体的实现方法: 1. **手动添加引用** 打开 Visual Studio 并右键单击解决方案资源管理器中的“引用”,选择“添加引用”。在弹出窗口中导航到“.NET”选项卡,并勾选 `WindowsBase` 和 `PresentationCore` 程序集。 2. **通过 NuGet 安装依赖项** 如果正在开发跨平台应用程序或者使用的是较新的 .NET Core/.NET 5+ 版本,则可以通过安装相应的 NuGet 包来引入所需的组件。例如,在命令行运行以下命令可以获取最新的 WPF 支持包: ```bash dotnet add package Microsoft.NET.Sdk.WindowsDesktop --version <specific_version> ``` 3. **代码示例** 下面是一个简单的 C# 示例,展示了如何利用来自上述两个程序集的功能创建基本的应用逻辑。 ```csharp using System; using System.Windows; // 来自 PresentationCore using System.Windows.Threading; // 来自 WindowsBase namespace WpfAppExample { public class AppLogic : DependencyObject { private DispatcherTimer _timer; public AppLogic() { _timer = new DispatcherTimer(); _timer.Interval = TimeSpan.FromSeconds(1); _timer.Tick += Timer_Tick; _timer.Start(); } private void Timer_Tick(object sender, EventArgs e) { Console.WriteLine("Tick from Dispatcher!"); } } } ``` #### 常见问题及解决办法 当尝试集成 `WindowsBase` 或 `PresentationCore` 到现有项目时,有时会面临一些挑战。下面列举了一些常见场景以及对应的处理方式: - **编译失败提示缺失某些 DLL 文件** 可能的原因是没有正确配置目标框架版本或未加载完整的 SDK 组件。按照官方文档指导更新工具链并验证环境设置是否匹配当前需求[^4]。 - **无法找到特定命名空间下的成员变量/函数声明** 需要确认已导入正确的名称空间头文件 (using),同时检查是否存在拼写错误或其他语法违规情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值