Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 如何知道两个项目是否位于同一appdomain_C#_.net_.net Assembly_Appdomain - Fatal编程技术网

C# 如何知道两个项目是否位于同一appdomain

C# 如何知道两个项目是否位于同一appdomain,c#,.net,.net-assembly,appdomain,C#,.net,.net Assembly,Appdomain,我在同一个解决方案中创建了5个项目,假设它们都具有相同的应用程序域,这样它们都可以共享静态变量(因为每个应用程序域都是静态的),那么如何确保它们都位于相同的应用程序域上呢?如果它们不是,如何使它们都在同一个应用程序域中运行。还有,我怎样才能给他们相同的名称空间,而他们都有自己的名称空间 例如project1名称空间是Bigproject.project1,project2名称空间是Bigproject.project2等等 (我在尝试使用winf.app时遇到了麻烦) 这不是一个有库的项目,而是

我在同一个解决方案中创建了5个项目,假设它们都具有相同的应用程序域,这样它们都可以共享静态变量(因为每个应用程序域都是静态的),那么如何确保它们都位于相同的应用程序域上呢?如果它们不是,如何使它们都在同一个应用程序域中运行。还有,我怎样才能给他们相同的名称空间,而他们都有自己的名称空间

例如
project1
名称空间是
Bigproject.project1
project2
名称空间是
Bigproject.project2
等等

(我在尝试使用winf.app时遇到了麻烦)


这不是一个有库的项目,而是两个控制台应用程序,有一个win表单和两个库,问题是其中一个控制台表单与该库的实例不同,win表单的实例指的是静态变量的实例,因此,我怀疑im不是在同一个appdomain上运行的,AppDomains是特定于某个进程的。只需在同一进程中运行它们

一个进程可以有多个AppDomain。如果要在不同的进程中创建AppDomain或运行这些程序集,则必须手动管理它们之间的通信

我在同一个解决方案中创建了5个项目,假设它们都有相同的应用程序域,这样它们都可以共享静态变量

如果您的解决方案只有一个引用其他库的可执行文件,我认为这是一个合理的假设

我如何确保它们都在同一个应用程序域上

应用程序域将由引用它们的程序集确定。你不能“确保”两个库将加载到同一个应用程序域中——两个独立的应用程序引用不同应用程序域中的库是完全合理的

也就是说,如果库由相同的可执行文件引用,那么它们将位于相同的应用程序域中(您必须显式地将程序集加载到单独的应用程序域中)

它不是一个有库的项目,而是两个控制台应用程序,一个win表单和两个库


然后您需要使用一些进程间通信(web服务、WCF)或中央存储库(数据库)。

项目不是AppDomains的同义词,除非您专门创建一个新的应用程序域,否则您在应用程序中引用的所有对象很可能通过其入口点机制位于同一应用程序域中。该机制可以是.exe或ASP.NET下的web请求等

常见的例外情况是:

  • 当您通过WCF或.NET远程处理(RPC、IPC)进行通信时
  • 通过任何SOA传输(如HTTP等)进行通信

关于从一个应用程序域到另一个应用程序域通信的症状,您会看到调用堆栈中有代理,请参见
MarshalByRefObject
ContextBoundObject

为什么您需要项目具有相同的命名空间?您能否详细说明您的项目类型,它们是类库吗,是在一个winform应用程序中使用,还是它们都是独立的winform应用程序?“要求”所有库在同一个appdomain中运行听起来像是一个脆弱的设计。为什么这是静态变量以外的要求?问题已更新为所有请求的信息查看WCF或其他类型的进程间通信,因为存在单独的应用程序。多个进程不能生活在同一appdomain中。不,它们实际上有3个可执行文件,我已更新了问题,添加了有关问题的更多信息。然后,不,您需要使用进程间通信或其他策略(服务、数据库等)。我要澄清您的答案-appdomain不是特定于Windows进程的,它们特定于.Net进程。应用程序域在Linux上的Mono中同样存在。我是否可以访问其他应用程序的应用程序域。