Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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/2/.net/21.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 - Fatal编程技术网

C#跨项目程序集引用-何时重新编译

C#跨项目程序集引用-何时重新编译,c#,.net,C#,.net,假设我有两个项目,PluginA和PluginB,它们分别构建了一个DLL,PluginA.DLL和PluginB.DLL PluginA(v1.0)有一个公共字符串属性: namespace PluginA { public static class Config { public static string SharedConfig { get; set; } } } 当该程序集加载时,该属性由PluginB(也是v1.0)设置: namespace PluginB {

假设我有两个项目,PluginA和PluginB,它们分别构建了一个DLL,PluginA.DLL和PluginB.DLL

PluginA(v1.0)有一个公共字符串属性:

namespace PluginA
{
  public static class Config
  {
    public static string SharedConfig { get; set; }
  }
}
当该程序集加载时,该属性由PluginB(也是v1.0)设置:

namespace PluginB
{
  public class Loader
  {
    public void Initialize()
    {
      PluginA.Config.SharedConfig = "xyz";
    }
  }
} 
这很好,但我很好奇在对PluginA进行某些更改后是否需要重新编译PluginB。例如,假设我将PluginA的版本更新为v1.1,并添加了一些新的、不相关的代码。PluginB是否需要重新编译,或者它是否会像新版本的PluginA一样继续工作


如果需要重新编译,是因为版本更改,还是因为代码更改,还是两者兼而有之?

似乎应该按项目添加引用,以确保始终获得最新版本

让我们看一下指南。

视情况而定

如果您没有使用特定版本引用PluginA,并且只要从其他程序集成员访问的插件位于samel位置,就不必重新编译。这会奏效的

虽然如果您的PluginB正在从PluginA访问常量成员,并且假设您更改了PluginA中常量成员的值,但PluginB不必重新编译,而是使用旧值。因此,您必须手动重新编译PluginB,因为当它“看到”它是常量时,它会将常量值复制到自己的清单中