Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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#_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc Areas - Fatal编程技术网

C# 在可移植区域获取调用/客户端程序集

C# 在可移植区域获取调用/客户端程序集,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-areas,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Areas,我在一个可移植区域内执行了一个操作,该区域需要获取有关调用它的程序集的信息。可移植区域位于项目核心,由客户端引用 GetAssembly和GetExecutionGassembly都返回核心程序集: // Both are Core assembly = Assembly.GetAssembly(GetType()); assembly = Assembly.GetExecutingAssembly(); 我的下一个想法是使用GetCallingAssembly,但这会带来匿名托管的Dynam

我在一个可移植区域内执行了一个操作,该区域需要获取有关调用它的程序集的信息。可移植区域位于项目核心,由客户端引用

GetAssembly和GetExecutionGassembly都返回核心程序集:

// Both are Core
assembly = Assembly.GetAssembly(GetType());
assembly = Assembly.GetExecutingAssembly();
我的下一个想法是使用GetCallingAssembly,但这会带来匿名托管的DynamicMethods程序集

唯一的另一个选项是GetEntryAssembly,它只是null:

assembly = Assembly.GetEntryAssembly();
我要做的是使用内置框架获取对客户端程序集的引用。显然,我可以使用一些花哨的依赖注入或其他不太复杂的方法来获取该操作的信息;然而,我想知道是否有更好的内置方法来实现这一点


澄清:我想在这里得到的是客户端程序集的版本信息。我希望每个客户端都能访问位于核心区域的VersionInfo部分,并将构建版本信息添加到呈现的页面中。因此,Core中的操作需要知道调用它的程序集,以便它能够反映出版本信息

经过很多努力和眼泪,我决定DI将是实现这一目标的最佳方式。为什么?

关于便携式区域的一些信息 经过一些研究和观察,似乎可移植区域在其自己的MVC子实例中运行。我尝试从我的便携区调用部分视图时,会出现在我的客户端应用程序的视图中:

@Html.Action("Versions", "Core")
如果我在Core中的版本操作中拉出stacktrace,我会得到:

核心版本 在System.Web.Mvc。。。 在System.Web.Mvc。。。 在ASP.\页面\视图\共享\布局\基础\ cshtml.Execute 在System.Web.Mvc。。。 在

由于我的客户机应用程序中的所有控制器代码都已执行,因此堆栈跟踪中甚至不再有对该程序集的引用。我还尝试在Versions操作中添加一个程序集参数,即la:

@Html.Action("Versions", "Core", new { assembly = Assembly.GetExecutingAssembly() })
但由此产生的结果是App_Web_xq4cmhcy,显然是一个生成的程序集


因此,真正剩下的唯一选择是添加一个DI容器,该容器在每个客户端应用程序的Global.asax中初始化,并带有执行程序集,然后可由核心方法读取。

您能提供一些上下文吗?便携区需要使用它的程序集提供哪些信息?到目前为止,DI/IoC听起来是最好的解决方案,但它不一定非得花哨;我只是希望里面已经有一些神奇的东西。
@Html.Action("Versions", "Core", new { assembly = Assembly.GetExecutingAssembly() })