嵌套文件时,嵌入资源名称失去扩展名
本文关键字:失去 扩展名 嵌入资源 文件 嵌套 | 更新日期: 2023-09-27 18:01:05
我在标记为嵌入式资源的文件中存储了一些脚本。我将这些文件中的每一个嵌套在其关联的.cs
文件下。不幸的是,由于某种原因,当您以这种方式嵌套文件时,嵌入的资源名称会丢失文件扩展名。这意味着在运行时,我无法识别哪些嵌入资源是脚本或不是脚本。我该怎么办?
我尝试过的一件事没有成功:获取具有FileName
属性的ManifestResourceInfo
对象。不幸的是,此属性是null
。
我试过的另一件事是把分机加倍。(如:filename.ext.ext
(。这没有起作用,第一个.
之后的所有东西仍然不见了。
我尝试用一些非常不同的东西来命名资源,并注意到资源名称甚至没有改变 它似乎是基于"依赖"文件为嵌套的嵌入式资源文件生成资源名称,在本例中,该文件只是一个常规的.cs
文件。我尝试将.cs
文件的扩展名加倍为filename.extrastuff.cs
,但资源名称仍然没有更改。它坚持在第一个.
之后剪切所有内容。
不,好吧,我现在看到它实际上是以.cs
文件中定义的类型命名资源,而不是以两个文件的文件名命名。这就是为什么扩展没有区别。这意味着我对任何一个文件名都无法帮助查找资源。
我发现文件失去扩展名的原因是,由于某种原因,当文件嵌套时,VS以类型而不是文件命名资源。
我发现的唯一允许我在嵌套时仍然具有扩展名的方法是手动编辑.csproj
文件并添加LogicalName
标记,这允许您覆盖资源名称。
<EmbeddedResource Include="Path'To'NestedFile.ext">
<LogicalName>NestedFile.ext</LogicalName>
<DependentUpon>ParentFile.cs</DependentUpon>
</EmbeddedResource>
不幸的是,没有IDE支持,我使用的FileNesting扩展也不支持写这个标签。
对每个文件都这样做太麻烦了,所以我不需要依赖文件扩展名,而是必须在脚本文件中添加一个标识符,将它们标识为脚本。
最终我意识到,由于在我的案例中,我正在验证单元测试中的脚本文件,所以我可以简单地扫描文件系统而不是资源清单,从而完全避免这个问题。