- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 ess.exe
的可执行文件。我使用 sgen.exe
为它生成一个 XmlSerializer DLL,当我运行它时,它会获取生成的 ess.XmlSerializers.dll
,一切正常。
我还有一个名为 EntrianSourceSearch_14.dll
的 DLL,它是使用 Assembly.LoadFrom(DllPathname)
动态加载的。如果我为该 DLL 生成 XmlSerializer DLL,它不会获取生成的 DLL;相反,它会回退到 XML 序列化代码的运行时生成。
如何让我的 DLL 获取其相应生成的 XmlSerializer DLL?
编辑:我无法将 XmlSerializer DLL 放入可执行文件的目录中,因为我的 DLL 是 Visual Studio 扩展的一部分 - 可执行文件是 Visual Studio (devenv.exe),将我的产品片段复制到它的目录中可能会被视为反社会。 :-)
编辑以添加更多上下文:这是一个 Visual Studio 加载项和扩展。它适用于从 2005 年到 2017 年的所有版本的 Visual Studio。大部分代码安装到 Program Files 中,而旧版本的 Visual Studio 只需将其作为加载项从那里加载。对于不支持加载项的较新版本的 Visual Studio,有一个扩展只是程序文件中那些主要组件的加载器。该扩展使用 LoadFrom
加载这些主要组件,其中之一是 EntrianSourceSearch_14.dll
。
最佳答案
如果您已经构建并部署了一个已签名的序列化程序集,您可以在加载和缓存序列化程序时添加一个 CurrentlDomain.AssemblyResolve
处理程序,例如:
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var codeBase = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath;
var serializerPath = Path.Combine(Path.GetDirectoryName(codeBase), new AssemblyName(args.Name).Name + ".dll");
if (File.Exists(serializerPath))
return Assembly.LoadFrom(serializerPath);
else
return null;
}
但是,我找不到在单个程序集 VS 扩展中包含序列化程序集部署的简单方法。
我确实找到了一种可能更可取的替代方法。它避免了直接调用Assembly.LoadFrom
以及上面代码中的一些假设:
Build->Generate serialization assembly
选项项目
引用Browse..
引用关于c# - 如何为 DLL 而不是 EXE 选择 sgen 生成的 XmlSerializer DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46121670/
我正在尝试做一些不寻常的事情...... 我有这个类 Foo : public class Foo { public Foo(string name) { this.N
操作系统:Ubuntu 是否可以将单一服务与 sgen 垃圾收集器一起使用?普通的垃圾收集器会泄露我所有的内存,直到世界末日到来。如果我找不到让 sgen 与单一服务一起工作的方法,我可能只能改用 c
更改 visual studio 项目的输出目录后,它开始无法构建并出现错误,非常类似于: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bi
我已经实现了 Generating an Xml Serialization assembly as part of my build 接受的答案中提到的更改
我在使用 MSBuild 时收到以下错误。我得到的错误是: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets
Java7的G1垃圾收集器和mono的SGen垃圾收集器的主要区别是什么?我知道它们都是分代 GC,但它们在性能和架构方面有何不同? 最佳答案 首先,让我们回顾一下两个 GC 收集器: Mono 的
我在以下环境中开发了一个应用程序(在我的错误中重命名为 MyApplication 以保护隐私): 单点触控 2.1 MonoDevelop 2.4.2 MacOS 10.6.8 iOS SDK 4.
在 Windows 10 上运行 VS 2017 15.5.3。 收到此一般性错误“无法运行指定的任务可执行文件“sgen.exe”。文件名或扩展名太长”在发布配置和 X64 平台中构建项目时。但它在
尝试在 Visual Studio 2008 专业版中构建我的项目时出现以下错误: Task failed because “sgen.exe” was not found, or the corre
在我的 Visual Studio 2010 项目中,我使用以下 Post-Build 事件命令行使用 sgen 创建 XmlSerializers.dll。 构建后事件: "$(ProgramFil
我正在构建一个包含几个解决方案的解决方案。除了其中一个以外,其他所有构建都没有任何问题。有问题的发出以下消息: Error 2 Unable to load one or more of the re
我正在使用 TeamCity 运行 MSBuild 脚本,该脚本可清理并重建我们的解决方案之一。当我部署由此进程生成的 dll 时,Web 服务器返回有关 [MyType].XmlSerializer
我的 .NET 3.5 库中有一个 sgen 构建步骤。在 VS2010 中,这会生成 .NET 4 MyLib.XmlSerializers.dll,无法从 .NET 3.5 应用程序加载它。有谁知
当我在 VS2013(版本 12.0.21005.1 REL)下编译我的 c# 解决方案时,它无法构建部分项目并出现错误消息: 错误 32 命令““C:\Program Files (x86)\Mic
是否可以使用 SGen garbage collector (来自单声道运行时)在常规 C/C++ 程序中?我认为单声道也使用了 Boehm-Demers-Weiser可用于 C/C++ 程序的保守垃
我有一个可以在我的本地机器上正常构建的项目,但是,当我使用 TFS 构建它时,我收到以下错误 - SGEN:尝试加载格式不正确的程序集: 在阅读了此处有关此主题的许多其他帖子后,大多数人只是说我需要将
我广泛使用 XmlSerializer,而不是让 .NET 在运行时生成必要的序列化程序集,我想提前生成这些程序集并将它们与我的应用程序捆绑在一起。我能够使用 Sgen 在构建时生成这些程序集。此外,
我希望能够在运行时检测 Mono 运行时是使用 Boehm GC 还是 SGen GC。我尝试使用谷歌搜索解决方案并花了一些时间浏览 Mono 文档,但找不到解决方案。有没有办法检测 Mono 在运行
我有以下类(都在同一个命名空间 Test.NamespaceTest 中定义): [XmlRootAttribute("rootTag")] public class BaseClass { } [X
我用 XMLSerializer 类做了一些事情。像大多数初学者一样,我在应用程序启动时遇到性能问题。我阅读了很多博客、文章,最后使用了 SGEN 工具。现在性能看起来还不错,但我还有一些不清楚的地方
我是一名优秀的程序员,十分优秀!