问题标签 [assemblies]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 在哪里可以找到 Visual Studio 中尚未包含的 Microsoft 程序集?
我认为有人可以普遍回答这个问题,但如果有人想具体说明我正在尝试使用:
使用 System.Web.Security.SingleSignOn;使用 System.Web.Security.SingleSignOn.Authorization;
我已经用谷歌搜索了我的大脑,这是我找到的最接近的答案:
“我们离线讨论了这个问题,但看起来 ADFS 程序集是 GACed,但没有安装在文件系统上或在 VS.NET 中注册,因此它显示在 .NET 选项卡中。我猜 MS 可能需要加强此方案的安装程序。与此同时,您可能需要自己执行此操作。”
到底是什么,我自己做什么?
c# - 如何加载特定版本的程序集
为了完成一些测试,即使我运行的是 32 位版本的 Windows,我也需要加载 64 位版本的程序集。这可能吗?
.net - 修改现有的 .NET 程序集
有没有办法修改现有的 .NET 程序集而不求助于 3rd 方工具?我知道PostSharp使这成为可能,但我发现 PostSharp 的开发人员基本上必须重写整个System.Reflection
命名空间的功能才能使现有程序集可修改,这非常浪费。
System.Reflection.Emit
只允许创建新的动态程序集。但是,这里使用的所有构建器类都继承自基本反射类(例如TypeBuilder
,继承自System.Type
)。不幸的是,似乎没有办法将现有的、动态加载的类型强制到类型构建器中。至少,没有官方支持的方式。
那么不支持怎么办?有谁知道允许将现有程序集或类型加载到此类构建器类中的后门?
请注意,我不是在寻找修改当前程序集的方法(这甚至可能是一个不合理的请求),而只是为了修改从光盘加载的现有程序集。我担心没有这样的事情,但我还是想问一下。
在最坏的情况下,人们不得不求助于ildasm.exe
反汇编代码然后ilasm.exe
重新组装,但是.NET 中没有包含工具链(阅读:IL 阅读器)来处理 IL 数据(或者是否存在?)。
/编辑:
我没有具体的用例。我只是对通用解决方案感兴趣,因为修补现有程序集是一项非常常见的任务。以混淆器、分析器或 AOP 库为例(是的,后者可以以不同的方式实现)。正如我所说,被迫在System.Reflection
.
@楔:
你是对的。但是,这里没有特定的用例。我已经修改了原始问题以反映这一点。另一个问题引发了我的兴趣,提问者想知道如何在每个方法的末尾注入指令pop
,ret
以防止 Lutz Roeder 的 Reflector 重新设计(VB 或 C#)源代码。
现在,这个场景可以通过许多工具来实现,例如上面提到的 PostSharp 和用于 Reflector 的Reflexil插件,而后者又使用Cecil库。
总而言之,我只是对 .NET 框架不满意。
@乔尔:
是的,我知道这个限制。无论如何,感谢您指出它,因为它很重要。
@马克思达德:
这似乎是唯一可行的方法。但是,这意味着您仍然必须使用构建器类重新创建完整的程序集,对吗?即,您必须手动遍历整个组件。
嗯,我会调查的。
c# - 如何将参数传递给通过 Assembly.CreateInstance 加载的 C# 插件?
我现在拥有的(成功加载插件)是这样的:
这仅适用于具有不带参数的构造函数的类。如何将参数传递给构造函数?
c# - 为什么要使用指令删除不必要的 C#?
例如,我很少需要:
但默认情况下它总是在那里。如果您的代码包含不必要的using 指令,我假设应用程序将使用更多内存。但是还有什么我应该注意的吗?
此外,如果仅在一个文件与大多数/所有文件中使用相同的 using 指令,它是否有任何区别?
编辑:请注意,此问题与称为using 语句的不相关概念无关,旨在通过确保当对象超出范围时调用其IDisposable.Dispose方法来帮助管理资源。请参阅C# 中“使用”的使用。
.net - .Net 中的私有程序集是什么?
我了解类级别及以下级别的访问修饰符,但为什么整个程序集是私有的?我假设默认情况下,程序集是公共的?
.net - 在 .NET 中有没有办法启用 Assembly.Load 跟踪?
在 .NET 中有没有办法启用 Assembly.Load 跟踪?我知道在调试器下运行时,它会给您一个很好的消息,例如“已加载'程序集 X'”,但我想在调试器之外获取我正在运行的应用程序的程序集负载的日志,最好与我的调试/跟踪日志消息混合。
我正在跟踪我的应用程序中的各种事情,我基本上想知道是什么动作触发了特定的程序集被加载。
tfs - AssemblyInfo.cs 文件的自动更新和签入偶尔会导致部分失败
我们将 TFS 2008 构建设置为签出项目中的所有 AssemblyInfo.cs 文件,使用 AssemblyInfoTask 更新它们,然后根据构建是否通过来撤消签出或签入。不幸的是,当两个构建紧密排列在一起时,这会导致构建部分完成,因为 AssemblyInfo.cs 文件似乎是在先前签入的早期版本中签出的。
为了解决这个问题,我认为我可以使用“获取”任务将 AssemblyInfo.cs 文件强制为最新版本,然后再更新它们,但这似乎没有效果。有任何想法吗?
.net - 使用程序集版本控制属性的最佳方法是什么?
AssemblyVersion和AssemblyFileVersion属性是处理 .NET 程序集版本号的内置方法。虽然该框架提供了自动确定版本号(构建和修订,用 Microsoft 术语)的最不重要部分的能力,但我发现这种方法非常薄弱,毫无疑问还有很多其他方法。
所以我想问一下,为了更好地反映项目的实际版本,确定了哪些方法可以最好地完成版本号?您是否有预构建脚本将部分版本设置为日期和时间,或项目工作副本的存储库版本?你只是使用框架提供的自动生成吗?或者是其他东西?管理程序集/文件版本控制的最佳方法是什么?