假设我有一个C#类库项目,它只包含xml文件作为嵌入式资源.我想从另一个解决方案项目中访问这些资源.由于'class'库不包含类,因此很难获得如下所示的程序集:
typeof(ClassName).Assembly ...
Run Code Online (Sandbox Code Playgroud)
最终获得嵌入式资源.有没有办法获得嵌入式资源,而无需硬编码任何魔术字符串等?谢谢.
PS:
这似乎是目前唯一可能的方式:
var assembly = typeof(FakeClass).Assembly;
var stream = assembly.GetManifestResourceStream("Data.Blas.xml");
Run Code Online (Sandbox Code Playgroud)
我在'数据'程序集中创建了一个'假类'.
我有一个MVC 6(vNext/ASP.NET 5)项目,有一个用于DAL(数据访问层)的类库.现在我得到一个例外,因为NHibernate找不到我试图坚持的实体的映射文件.我已经看到严格的指令将此XML映射文件标记为嵌入式资源而不是复制到输出,但是在我设法为此文件打开的三个属性页中,没有任何一个可以规定这一点.
我只是转向基于代码的流畅映射,但这个问题并不是我的一个NHibernate映射文件所特有的.在解决方案资源管理器中右键单击的项目项的旧属性页面就消失了.我希望如果嵌入式资源这样的东西仍然存在,那么project.json我们必须在其他地方指定它.
使用dotnet核心:.NET Core SDK版本:3.1.102
为什么以下返回 null
?
typeof(MyClassName).GetTypeInfo().Assembly.GetManifestResourceStream("MyFile.cs")
Run Code Online (Sandbox Code Playgroud)
我验证了该文件存在于解决方案中,并且在属性“嵌入式资源”中具有构建操作
我意识到这基本上就是这个问题,但它被接受的答案只是指向一个似乎没有做提问者请求的链接(它不是从ResourceManager/ResourceSet开始).
有没有办法做到这一点?
我在 .Net 4.5 中升级了我的旧应用程序。有一些过时的方法警告我非常想解决它们。过时的方法之一是 XmlValidatingReader。在互联网上查了一下,发现XmlReaderSettings是 XmlValidatingReader 的潜在替代品。
// ==old code==
Hashtable _SchemasCache = new Hashtable();
XmlReader xmlReader = new XmlTextReader(xmlStream);
XmlValidatingReader validatingReader = new XmlValidatingReader(xmlReader);
validatingReader.Schemas.Add(root.Namespace, schemaLocation); // both parametres are string. No error
_SchemasCache.Add(schemaLocation, validatingReader.Schemas);
// ==new code==
var schemaLocation = "res://somepath/Messages.xsd";
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(root.Namespace, schemaLocation); // this line gives error
_SchemasCache.Add(schemaLocation, settings.Schemas);
Run Code Online (Sandbox Code Playgroud)
旧代码没有给出任何错误,但新代码给出了一个错误,The URI prefix is not recognized.我找不到 的这种行为的原因settings.Schemas.Add(),因为它与XmlValidatingReader. 有人能帮忙吗?
编辑:这里schemaLocation 的值是“res://somepath/Messages.xsd”。因为 schemaLocation没有Http: …
我有一个xml文件作为Project_A中的嵌入式资源.
我想从Project_B中获取这个引用Project_A的嵌入式资源.
(基本上Project_B包含单元测试,我用ReSharper运行它们.)
当我在Project_B上工作时,是否可以访问Project_A的嵌入式资源?
或者一般来说,我可以在同一解决方案中从另一个项目访问另一个项目的嵌入式资源吗?
c# ×6
.net ×3
asp.net ×2
.net-core ×1
asp.net-core ×1
obsolete ×1
reflection ×1
resx ×1
xmlreader ×1
xsd ×1