嵌入文件嵌入时嵌入式资源名称丢失

时间:2016-08-07 01:41:13

标签: c# visual-studio embedded-resource csproj

我有一些脚本存储在我标记为嵌入式资源的文件中。我将每个文件嵌套在相关的.cs文件下。遗憾的是,出于某种原因,当您以这种方式嵌套文件时,嵌入的资源名称会丢失文件扩展名。这意味着在运行时我无法识别哪些嵌入式资源是脚本还是非脚本。我该怎么办?

我试过的一件事不起作用:获取ManifestResourceInfo对象,该对象具有FileName属性。不幸的是,此属性为null

我尝试的另一件事是将扩展加倍。 (例如:filename.ext.ext)。这不起作用,第一个.之后的所有内容仍然缺失。

我尝试用非常不同的东西命名资源,并注意到资源名称甚至没有改变。 它似乎是基于“依赖于”文件为嵌套的嵌入式资源文件生成资源名称,在这种情况下,它只是一个常规的.cs文件。我尝试将.cs文件的扩展名加倍到filename.extrastuff.cs,但资源名称仍未更改。它坚持在第一个.之后剪切所有内容。

不,好的,我现在看到它实际上是在.cs文件中定义的 type 之后命名资源,而不是任一文件的文件名。这就是扩展没有区别的原因。这意味着我无法使用任何文件名来帮助查找资源。

1 个答案:

答案 0 :(得分:4)

我发现文件丢失扩展名的原因是因为出于某种原因嵌套文件时,VS在类型之后而不是在文件之后命名资源

我发现允许我在嵌套时仍有扩展名的唯一方法是手动编辑splunk-timedata-field文件并添加.csproj标记,这样您就可以覆盖资源名称。

LogicalName

不幸的是,没有IDE支持,我正在使用的FileNesting扩展也不支持编写此标记。

为每个文件执行此操作过于繁琐,因此我不必依赖文件扩展名,而是在脚本文件中添加标识符,将标识符标识为脚本。

最终我意识到,在我的情况下,我正在验证单元测试中的脚本文件,我可以简单地扫描文件系统而不是资源清单,并完全避免这个问题。