1利用反射AssemblyLoadFrom() 动态加载程序集
static void Main()
{
// Load the assembly and create an Instance of MyAssembly
Assembly aa = AssemblyLoadFrom("MyAssembly\\MyAssemblydll");
Type a_t = aaGetType("MyAssembly");
object o = ActivatorCreateInstance(a_t);
// Invoke the GetDepAssembly method
object ac = oGetType()InvokeMember("GetDepAssembly", BindingFlagsInvokeMethod, null, o, new object[] {});
}
2使用 <codeBase> 元素。
只有在计算机配置文件或也重定向程序集版本的发行者策略文件中,才可以使用 <codeBase> 元素。在运行库确定要使用哪一程序集版本时,它应用确定版本的文件中的基本代码设置。如果未指出基本代码,那么运行库就以通常的方法探测程序集。有关详细信息,请参见运行库如何定位程序集。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asmv1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"//必需!程序集的名称
publicKeyToken="32ab4ba45e0a69a1" //sn -t FileNameKeyPublicsnk 得到该值
culture="en-us" />//可选,指定程序集的语言和国家/地区的字符串。一般是neutral
<codeBase version="2000"//程序集版本AssemblyInfocs中配置,或在属性中配置。
href=">呵呵,我写了个超简单的源码,你自己看吧!
版本
2
支持库
internet
程序集
窗口程序集1
子程序
__启动窗口_创建完毕
局部变量
文件,
文本型
局部变量
左边的内容,
文本型
局部变量
网址,
文本型
_启动窗口标题
=
“V010”
文件
=
到文本
(>在你的解决方案的项目上按右键,选属性,在应用程序界面选程序集信息。根据要求填入信息便可。vs2010有时在你填完后可能出错,你可直接打开项目下的Properties目录的AssemblyInfocs文件,对版本信息进行修改。
C#生成的应用程序右键详细信息上面的版本到底怎么改呢,一直想知道。
今天特地查了下,原来在这里,在Propertise下的Assemblyinfocs中
双击打开后就可看到相关信息
using SystemReflection;
using SystemResources;
using SystemRuntimeCompilerServices;
using SystemRuntimeInteropServices;
using SystemWindows;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("WpfApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WpfApplication2")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//将 ComVisible 设置为 false 将使此程序集中的类型
//对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
//若要开始生成可本地化的应用程序,请
//<PropertyGroup> 中的 csproj 文件中
//例如,如果您在源文件中使用的是美国英语,
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
//对以下 NeutralResourceLanguage 特性的注释。 更新
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocationSatellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocationNone, //主题特定资源词典所处位置
//(当资源未在页面
//或应用程序资源字典中找到时使用)
ResourceDictionaryLocationSourceAssembly //常规资源词典所处位置
//(当资源未在页面
//、应用程序或任何主题专用资源字典中找到时使用)
)]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“”: :
// [assembly: AssemblyVersion("10")]
[assembly: AssemblyVersion("1000")]
[assembly: AssemblyFileVersion("1000")]
1程序集(assembly)也有翻译成装配件的。不能单纯的说是一个或者几个cs文件。2它是应用程序中同一功能的逻辑单元,可以是单文件的程序集也可能是多文件的。(我记得某书上说用vs编译出来的都是单文件程序集)
3这个东西可以理解成是对一个(多个)dll或者exe的封装,利于版本控制而且还有元数据作为说明等好处。
4如果程序运行时需要使用某个方法,才会把它的程序集装载进内存否则可能一直都不会装载,就是使用哪部分装载那哪部分
!!最后,我理解的也不怎么样。只能零散的说这么多。
你问的那个控制访问修饰符。确实就五个,
c#相对对于c++加了Protected internal (同一个assembly和其子类可以访问)
internal (同一个assembly可以访问)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)