Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我向C#类添加公共方法,是否需要使用该类型重新编译其他程序集?_C#_.net_Interface_Assemblies_Public - Fatal编程技术网

如果我向C#类添加公共方法,是否需要使用该类型重新编译其他程序集?

如果我向C#类添加公共方法,是否需要使用该类型重新编译其他程序集?,c#,.net,interface,assemblies,public,C#,.net,Interface,Assemblies,Public,标题中的问题 我希望避免重新编译,因为我正在修改的源代码是第三方的,我希望在可能的情况下使用原始二进制文件,并且只替换包含我修改的类的程序集。但我不确定这样做是否安全。以C++为例,这绝对是个坏主意。 < P> NO.< 引用库的程序集引用使用(某种形式的)名称的方法和类型,因此只要不更改公共类型和方法(由其他程序集使用)的名称,您不需要重新编译任何程序集-它们将使用库的更新版本。否。所有其他程序集将自动使用新更新的库 在大多数情况下,托马斯的回答是正确的,但也有一些情况是不正确的: 当使用强命

标题中的问题

我希望避免重新编译,因为我正在修改的源代码是第三方的,我希望在可能的情况下使用原始二进制文件,并且只替换包含我修改的类的程序集。但我不确定这样做是否安全。以C++为例,这绝对是个坏主意。

< P> NO.<
引用库的程序集引用使用(某种形式的)名称的方法和类型,因此只要不更改公共类型和方法(由其他程序集使用)的名称,您不需要重新编译任何程序集-它们将使用库的更新版本。

否。所有其他程序集将自动使用新更新的库

在大多数情况下,托马斯的回答是正确的,但也有一些情况是不正确的:

  • 当使用强命名(签名)时,单个字符的更改将导致新签名,千将导致新的强名称
  • 在程序集的项目引用中将属性特定的版本设置为true,并在AssemblyInfo.cs中手动或自动更改版本号