我正在考虑在自定义框架的命名空间中使用带变音标记的字符(例如,ō).这个想法已经成为区分产品的一种方式,但我想确定这不是一个坏主意,如果有任何关于它的东西会在稍后再次出现.我没有看到在我的搜索中使用特殊字符的命名空间的其他示例,也没有关于此主题的任何类似讨论,这让我暂停继续沿着这条路走下去.
我最初也在考虑用变音符号命名程序集,但我遇到的第一个showstopper是试图对程序集进行数字签名.我无法在命令提示符中显示特殊字符,因此我收到了无效输入错误.也许还有另一种解决方法吗?
我意识到,它使得在Visual Studio中输入命名空间更具挑战性.然而,我并不认为这是一个主要问题,因为角色将接近我正在使用的词的末尾,这个词将是相当独特的,并且使用IntelliSense这不应该是一个大问题.
请考虑以下示例,包含在程序集Macron.dll中:
namespace Macr?n.Library
{
public class MyLibrary
{
public string MyProperty { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
生成和使用此Macron.dll似乎没有问题,并且没有区分此示例Macrōn.Library命名空间的问题.文件,文件夹,项目和解决方案名称Macrōn似乎没有引起任何问题,一切似乎与源代码控制没有任何问题.
在程序集和命名空间中使用变音符号时我缺少的任何其他注意事项或事项?有关绕过我的问题签署大会的任何想法?这种方法是否会失败?是否真的不值得实施,因为它可能令人困惑或难以/模糊使用?
这将变成很多工作后来撤消,所以我想知道在我深入研究这个之前我是否在自己脚下射击.
谢谢.
我有两个第三方集会.一个用于x86目标,另一个用于任何CPU.有没有办法在同一个应用程序中使用它们.
现在我的应用程序已成功编译但无法运行.我试图为x86和任何CPU构建我的EXE文件,但没有运气.我可以使用corflags来更改目标平台位,但程序集已签名,我不想更改其签名.
有人可以帮忙吗?
我在我的项目中使用CKEditor,但是我试图让它工作而不需要在我正在使用它的每个页面中声明程序集.
我声明的程序集是这样的:
<%@ Register Assembly="CKEditor.NET" Namespace="CKEditor.NET" TagPrefix="CKEditor" %>
Run Code Online (Sandbox Code Playgroud)
按照本网站上的说明,我在web.config中进行了以下更改
<system.web>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
<controls>
<add tagPrefix="CKEditor" assembly="CKEditor.NET"/>
</controls>
</pages>
</system.web>
Run Code Online (Sandbox Code Playgroud)
但我一直收到这个错误
分析器错误消息: tagPrefix条目中找到的属性无效或缺失.对于用户控制,还必须指定'tagName'和'src'.对于自定义控件,您还必须指定"命名空间",并可选择"汇编"
我不确定我做错了什么.也许是一件愚蠢的事,不确定.
我正在使用加载另一个程序集
Assembly.LoadFrom("path.exe");
Run Code Online (Sandbox Code Playgroud)
之后我似乎无法从文件系统中删除该exe.所以我想知道这条路径是否保持打开文件句柄以及我如何关闭它?
.NET Assembly类包含一个方法(GetExportedTypes())和一个属性(ExportedTypes).
这些文档似乎相同("返回程序集中所有公共可见类型的集合").这些之间有什么区别吗?或者这是与Assembly类的API有关的历史原因吗?
我在Winforms,C#.NET4.5工作
我在程序集A中有一个名为classA的类,它提供了method1
在我的主程序集中,我可以调用此方法,但在某些情况下,我100%确定这不会发生,因为来自注册表项的一些内部标志:
if( valueFromRegistryIsAlwaysFalse)
{
var A = new classA();
A.method1();
}
Run Code Online (Sandbox Code Playgroud)
当我在注册表中设置此值时,我不想为程序集A提供主可执行文件,但是即使我不使用该方法,它也需要程序集A来启动.我当然得到了这个,但有没有办法绕过这个?
我以前认为已经签名和/或强名称的.net程序集在加载时由CLR验证,这意味着某人无法编辑IL并且仍然具有有效的程序集.然后我听了这个伟大的Herding Code播客,其中Jon McCoy说并没有真正发生(播客中约12:47) - 也就是说,任何人都可以编辑IL并弄乱你的程序集,CLR也不会关心.我知道这听起来很奇怪,但他似乎知道他在说什么,所以也许只是因为我不确切地知道他所指的是什么情景.
有人可以解释CLR是否以及何时实际验证装配的全部内容以确保某人没有篡改IL?如果"签名"或"强命名"没有这样做,您需要什么过程才能使CLR正确检查程序集?
其他一些参考文献(对我来说还没有完全清楚 - 可能我只是有点慢):
谈论编辑IL并绕过强名称签名验证.NET Framework程序集(我不知道这是否与Jon引用的攻击类型相同).
攻击者可以用他自己的密钥辞职但是不能保持你的签名完好无损:强制命名程序集可以用来验证程序集作者吗?(即不是Jon提到的同一攻击)
从.net 3.5说起CLR不会在完全信任下验证程序集:为什么.NET不验证BCL/CLR?(也许这就是Jon的意思?)
如何验证程序集:如何以编程方式验证程序集是否使用特定证书进行签名?
Grey Wolf(由Jon McCoy提供) - 用于复制强化名称在程序集上的签名!https://www.digitalbodyguard.com/graywolf.html
我正在尝试发布ASP.NET MVC 4 Internet应用程序.发布后,我继续点击我网站的链接,找到:
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息: System.IO.FileNotFoundException:无法加载文件或程序集'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.该系统找不到指定的文件.
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
程序集加载跟踪:以下信息有助于确定无法加载程序集"System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"的原因.
警告:装配绑定日志记录已关闭.要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败日志记录会导致一些性能损失.要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog].
堆栈跟踪:
[FileNotFoundException:无法加载文件或程序集'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.系统找不到指定的文件.] c:\ Users\EAGUILARCO\Documents\Visual Studio 2012\Projects\ProyectoFinal\ProyectoFinal\Global.asax.cs中的ProyectoFinal.MvcApplication.Application_Start():26
[HttpException(0x80004005):无法加载文件或程序集'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.系统找不到指定的文件.] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)+9916613 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo [] handlers)+118 System.Web. HttpApplication.InitSpecial(HttpApplicationState状态,MethodInfo []处理程序,IntPtr appContext,HttpContext上下文)+172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context)+336 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+ 296
[HttpException(0x80004005):无法加载文件或程序集'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.系统找不到指定的文件.] System.Web.HttpRuntime.FirstRequestInit(HttpContext …
我有以下代码,基本上创建一个DynamicAssembly有两种类型,每种类型都有一个公共方法.
var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly
(new AssemblyName("TestAssembly"), AssemblyBuilderAccess.Run);
var module = assembly.DefineDynamicModule("Main");
var type1 = module.DefineType("type1");
var method1 = type1.DefineMethod
(
"Method1", MethodAttributes.Public, typeof(void), null
);
var gen = method1.GetILGenerator();
gen.Emit(OpCodes.Ret);
var t1 = type1.CreateType();
var createdMethod1 = t1.GetMethod("Method1");
var type2 = module.DefineType("type2");
var method2 = type2.DefineMethod
(
"Method2", MethodAttributes.Public, typeof(void), null
);
byte[] ilCodes = new byte[5];
ilCodes[0] = (byte)OpCodes.Jmp.Value;
ilCodes[1] = (byte)(createdMethod1.MetadataToken & 0xFF);
ilCodes[2] = (byte)(createdMethod1.MetadataToken >> 8 & 0xFF);
ilCodes[3] = (byte)(createdMethod1.MetadataToken >> 16 & 0xFF); …Run Code Online (Sandbox Code Playgroud) 我试图在我的项目中使用第三方.net 4.6 dll.这个dll的大小是40mb,一切正常.
然而,加载我的DLL的应用程序中有一个错误,当加载的dll大于10mb时崩溃.这是固定的,但暂时还没准备好.
为了不拖延我的项目是否可以将.NET程序集拆分为更小的块,但仍然有引用程序集正确加载所有内容?
.net-assembly ×10
c# ×8
.net ×6
clr ×2
asp.net ×1
ckeditor ×1
code-signing ×1
il ×1
ilmerge ×1
namespaces ×1
reflection ×1
security ×1
split ×1
system.web ×1
web-config ×1
winforms ×1