问题标签 [assemblies]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5397 浏览

asp.net - ASP.NET 托管环境/shadowCopyBinAssemblies

今天我偶然发现了hostingEnvironment标签中的shadowCopyBinAssemblies选项。

显然,此属性是一个web.config (system.web) 配置布尔选项,指示 Bin 目录中应用程序的程序集是否被影子复制到应用程序的 ASP.NET 临时文件目录。

一位同事必须启用此设置,因为(仅)在他的开发机器上,他经常在 Web 浏览器中遇到 ASP.NET 错误:

在 Visual Studio 2008 中编译特定的 Web 项目并打开一个页面。

所以现在我的问题是:我可以在生产环境中保留此设置还是会损害性能和/或产生其他问题?

谢谢!

0 投票
1 回答
2258 浏览

asp.net - 在父 web.config 中被忽略

我有一个包含多个网站的文件夹,它们都使用 GAC 中的相同程序集。每个网站还包含一些他们自己的“自定义”程序集,这些程序集引用了公共程序集。

此文件夹中有一个 web.config,用于定义站点的通用设置,包括要加载到<system.web>/<compilation>/<assemblies>元素中的程序集。

我想要做的是添加一个<runtime>/<assemblyBinding>部分以将请求从较旧的“自定义”程序集重定向到安装在 GAC 中的较新程序集。(不幸的是,不能使用 machine.config 或 GAC 重定向策略,因为这会影响其他站点。)

似乎该<assemblyBinding>部分被忽略,除非它位于网站自己的 web.config 或 machine.config 中。

我已经遇到过这个<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">问题,所以我知道不是这样。

有谁知道这是应该发生的事情还是我错过了什么?

0 投票
7 回答
53022 浏览

wpf - 奇怪的错误 - CS0012:类型 x 在未引用的程序集中定义

类型“x”在未引用的程序集中定义。您必须添加对程序集“abc123”的引用。

我有一个引用我的程序集“abc123”的 .NET 2.0 Web 应用程序。该程序集存在于 GAC 中,我已经验证它是正确的(相同的)版本。除了一个 .aspx 页面外,应用程序的其余部分没有问题。有问题的页面有一个转发器,它将用户控件显示为其“字段”之一。在将 y 类型的列表绑定到中继器后,我向用户控件传递了一个 x 类型的列表(y 的属性),如下所示:

在用户控件的属性集上,我将 x 类型的列表绑定到用户控件中的 gridview。

需要注意的一件奇怪的事情是,该报告在我的开发电脑上运行良好,但在部署后无法在任何服务器上运行。我的电脑是 Windows XP、IIS6、VS2005。服务器是 Windows Server 2003、IIS6。

我希望我解释得足够好。提前感谢您提供的任何见解。

0 投票
4 回答
2105 浏览

vbscript - 使用 vbscript 删除 GAC 程序集

如标题所说,如何使用 vbscript 删除 GAC 程序集文件?

0 投票
3 回答
392 浏览

.net - 使用版本化的 .Net 程序集

在我们的处理软件中,我们正在从外部组件的一个版本迁移到更新的版本。虽然程序集执行的总体任务是相同的,但 API 完全不同,并且没有保持向后兼容性。API 负责从外部站点提取数据,这些站点可能与匹配的新旧 API 一起运行(也没有向后兼容性)。我们无法控制外部程序集或外部工作站中的软件。外部程序集没有强签名,并且程序集中的模块在两个版本中具有相同的名称。

我们不想维护我们的处理软件的两个版本,而是希望动态地发展它并让它使用旧版本或新版本的外部组件,这取决于外部站进行联系。我们能够确定外部站是否支持新版本,因此“版本”的选择可以或多或少明确。

所以设置是我们有两个版本的外部程序集 ComLib.dll。我们可以从同一个程序集/项目中引用这两个版本吗?在确定类型等时我们如何区分这两个程序集?

假设上述内容不能在单个程序集/项目中完成,我们可以实现特定于版本的“适配器”程序集,每个版本的外部程序集一个(我认为我们已经为此准备了足够的接口和抽象),但是我们应该注意一些警告或一些特定设置以避免运行时的类型/版本混淆(程序集解析/加载等)?对于此设置,.NET 运行时是否有足够的“并行”支持?

更新:这个问题的进一步扭曲只是为了让事情变得更有趣。似乎外部程序集加载了其他程序集并使用了外部配置文件。由于不同的版本需要不同的配置文件和不同的附加程序集,每个版本都需要以某种方式加载与其版本相匹配的附加程序集。

在我看来,我们想要的是每个版本的程序集在包含其配置文件和其他程序集的单独文件夹中加载一个“根”。这甚至可以通过标准程序集解析器/加载器实现,还是我们必须做一些魔术并手动加载程序集(在单独的 AppDomains 中?)以强制执行“根”文件夹?

0 投票
1 回答
1456 浏览

.net - Visual Studio 安装程序不包括附属资源程序集

我有一个安装 .NET Windows 服务的 VS2008 安装程序项目。该服务的依赖项之一是 .NET 程序集,它具有卫星程序集形式的本地化资源。由于某种原因,安装程序没有打包或安装卫星组件,因此服务将无法启动。有任何想法吗?

0 投票
1 回答
1525 浏览

asp.net - 没有为 ASP.NET Web 应用程序加载程序集

我有一个引用外部 DLL 的 Web 应用程序(我们称之为 productA.dll)

我已经更新了我的 GAC、我web.config的 和我的参考资料,检查了版本,一切看起来都是一致的。

但是,当我运行我的应用程序时,productA.dll无法调用我使用的方法,并且出现the specified module cannot be found错误。

我尝试创建一个 Windows 应用程序,我可以使用得productA.dll很好。

在 Web 应用程序运行时观察输出窗口,我注意到productA.dll符号没有加载。所以我猜这就是找不到模块的原因。

问题是:为什么没有加载符号?

任何有关解决方案或诊断技术的提示将不胜感激。

0 投票
1 回答
30592 浏览

.net - 根命名空间和程序集名称之间的区别

两者有什么区别?

0 投票
3 回答
5127 浏览

.net - 在不重新构建的情况下更改程序集的清单

在 .NET 中,是否有工具或其他方法允许我们修改程序集的清单,而无需修改 AssemblyInfo 并重新构建程序集?

0 投票
7 回答
1270 浏览

asp.net - ASP.NET DLL 地狱

我有第三方工作流软件(Captaris Teamplate),它从我的项目中引用一个程序集,它通过GAC从我们的项目解决方案中引用其他程序集。

当我们的应用程序执行时,它会调用 Captaris Teamplate 方法来创建一个工作流过程,该过程又使用 GAC 中的项目程序集将数据存储到数据库中。

问题是当我编译我的项目并从 GAC 中删除程序集并用新版本替换它们时,但是当我运行整个项目时,Captaris Teamplate 会引发错误:

异常类型:System.IO.FileNotFoundException
消息:找不到文件或程序集名称 VBAssembly 或其依赖项之一。
FileName: VBAssembly
FusionLog: === 预绑定状态信息 ===
LOG: DisplayName = VBAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

也就是说,它不会给我程序集 DLL 文件的名称。它试图找到它正在寻找的版本。此类问题的故障排除就像在黑暗中射击,它可以杀死保存在 ASP.NET 临时文件夹、项目文件夹和网站文件夹 (inetpub) 中的旧程序集、重新启动等、测试错误、出现错误,搜索其他一些旧程序集等。

所以我的问题是:

  1. 是否有一种技术可以让我提取有关此异常的更多信息,例如缺少的程序集名称和版本?
  2. 有没有一种简单的方法可以在编译时从系统中清除所有旧的程序集版本?
  3. 在处理这个DLL Hell和/或 Captaris Teamplate 时还有其他建议吗?

我们将 ASP.NET 1.1 版与带有 Captaris Workflow 5.0 的 Visual Studio 2003 一起使用。