所以我有一个C#应用程序.它有一些链接到它的资产,并且在编译期间被嵌入.应用程序在Windows上编译和运行完美.当用mono测试兼容性时,告诉所有内容都是正确的.如果我尝试编译给出一个错误的n xml文件
/home/rupert/Desktop/CloudObserverLite(4)/CloudObserverLite/Properties/Resources.resx: Error: Error: Invalid ResX input.
Position: Line 123, Column 5.
Inner exception: value
(CloudObserverLite)
Run Code Online (Sandbox Code Playgroud)
如果我们看看resx xml
...<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="framework_4_5_0_17689_swz" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>../assets/framework_4.5.0.17689.swz;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="index_html" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>../assets/index.html;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1251</value>
</data>...
Run Code Online (Sandbox Code Playgroud)
第123行将是第一个 </data>
标记.
这是所有resx文件,如果它可以提供更多信息
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML …
Run Code Online (Sandbox Code Playgroud) 我记得在几年前读过一篇文章或帖子,建议在项目中包含一个资源文件,方法是引用.rc文件而不是已编译的.res文件,以便资源构建为项目构建过程的一部分.
我有一个glyphs.rc文件,我目前使用命令brcc32 glyphs.rc编译.在我的项目文件中,我有声明{$ R Glyphs.res}.
我想通过改变它来简化它
{$R Glyphs.rc}
Run Code Online (Sandbox Code Playgroud)
但我不确定语法.当我尝试使用时,{$R Glyphs.rc}
我得到一个错误`
[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "Glyphs.rc".
Run Code Online (Sandbox Code Playgroud)
这种方法可以用Delphi 2007吗?
有没有办法有条件地将资源嵌入到.NET项目中?即如果我已经定义了INCLUDETHIS,那么我想在dll中嵌入一个特定的大文件,否则我不希望它嵌入.我知道我可以做两个项目,但我希望在一个项目中完成所有这些.使用该文件的代码很容易用#if INCLUDETHIS ... #endif来调节,但我甚至不想在dll中使用该文件,因为它包含敏感信息并且仅在内部使用.
我正在尝试在我的应用程序中添加自定义字体作为资源.我在应用程序中有一个"CustomFont"目录,其中的所有字体都设置为"Resource"
<Window.Resources>
<Style x:Key="Gotham-XLight">
<Setter Property="TextElement.FontFamily"
Value="/CustomFonts;Component/#Gotham-XLight" />
</Style>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
然后在我的TextBlock上我有这个:(在网格内)
<TextBlock x:Name="TimeTextBlock" Style="{DynamicResource Gotham-XLight}"
TextAlignment="Center" FontSize="25" FontWeight="Bold"
Foreground="White" Text="TextBlockTimer"
Margin="105,242.974,0,226.975" HorizontalAlignment="Left"
Width="221.919" />
Run Code Online (Sandbox Code Playgroud)
但是我没有像人们说的那样看到我的字体.难道我做错了什么?
我正在开发一款需要特定条形码真实字体的应用程序,这种字体不太可能出现在用户的PC上.
我可以以某种方式在应用程序中嵌入字体,还是我需要使用安装程序来安装字体?
我的资源(.resx)文件中有一堆字符串.我试图直接使用它们作为switch语句的一部分(请参阅下面的示例代码).
class Test
{
static void main(string[] args)
{
string case = args[1];
switch(case)
{
case StringResources.CFG_PARAM1: // Do Something1
break;
case StringResources.CFG_PARAM2: // Do Something2
break;
case StringResources.CFG_PARAM3: // Do Something3
break;
default:
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我看了一些解决方案,其中大多数似乎都暗示我需要将它们声明为const string
我个人不喜欢的.我喜欢这个问题的最高投票解决方案:在switch语句中使用字符串集合.但后来我需要确保我enum
和strings
资源文件绑在一起.我想知道一个巧妙的方法.
编辑:在研究如何使用时
也找到了这个很好的答案Action
:
我正在关注zetcode Snake java游戏教程并始终收到此错误:
ImageIcon iid = new ImageIcon(this.getClass().getResource("ball.png"));
ball = iid.getImage();
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at snake2.Board.<init>(Board.java:52)
at snake2.Snake.<init>(Snake.java:10)
at snake2.Snake.main(Snake.java:22)
Run Code Online (Sandbox Code Playgroud)
我实际上只是复制并粘贴代码以查看它是如何工作的.它们也在合适的包装中; 但是当我尝试运行它时,我总是会遇到这个错误.
我正在开发一款同时针对Android的Windows Phone 8.1应用程序(Xamarin)
我一直在PCL上添加我的字符串资源(.resx)并在我的启动器项目中引用它们以在我的视图上使用它,这在WP 8.1 silverlight上运行正常,但在配置项目以释放并运行它时在WinRt上运行在设备上,由于某种原因,我总是得到一个MissingManifestResourceException.我已经尝试过解决这个问题的所有解决方案而没有任何成功.
请注意,在模拟器上一切正常,当解决方案配置器设置为Debug时,它也适用于设备和模拟器.这里唯一的组合是设备和发布.
应用源代码在Github上.
我能够创建一个简单的项目来复制这个问题,基本上它是一个WP 8.1应用程序和一个带有嵌入式资源的PCL项目,下载链接
有人有什么想法吗?
编辑:经过一些更多的测试,我尝试运行一个旧的Windows 8.1应用程序,我已经使用相同的本地化模型,并出现相同的问题所以它接缝是一个工具问题而不是配置问题,因为Windows 8.1应用程序是在市场上,一切都很顺利.
resx embedded-resource windows-phone windows-runtime windows-phone-8.1
我正在尝试实现一种通用方法,为我的Web解决方案中的不同程序集提供使用嵌入式资源中嵌入的JavaScript和CSS文件的可能性.此博客文章显示了使用VirtualPathProvider的技术.这很好,但VirtualPathProvider需要包含在包含嵌入资源的每个程序集中.
我试图从博客文章中增强VirtualPathProvider,以便可以将程序集传递给它并从程序集中加载资源:
public EmbeddedVirtualPathProvider(VirtualPathProvider previous, Assembly assembly)
{
this.previous = previous;
this.assembly = assembly;
}
Run Code Online (Sandbox Code Playgroud)
初始化时,它从传递的程序集中读取所有嵌入的资源:
protected override void Initialize()
{
base.Initialize();
this.assemblyResourceNames = this.assembly.GetManifestResourceNames();
this.assemblyName = this.assembly.GetName().Name;
}
Run Code Online (Sandbox Code Playgroud)
并GetFile
从传递的程序集中读取内容:
public override VirtualFile GetFile(string virtualPath)
{
if (IsEmbeddedPath(virtualPath))
{
if (virtualPath.StartsWith("~", System.StringComparison.OrdinalIgnoreCase))
{
virtualPath = virtualPath.Substring(1);
}
if (!virtualPath.StartsWith("/", System.StringComparison.OrdinalIgnoreCase))
{
virtualPath = string.Concat("/", virtualPath);
}
var resourceName = string.Concat(this.assembly.GetName().Name, virtualPath.Replace("/", "."));
var stream = this.assembly.GetManifestResourceStream(resourceName);
if (stream != null)
{
return new EmbeddedVirtualFile(virtualPath, stream);
} …
Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc virtualpathprovider embedded-resource bundling-and-minification
从IDEA 2018.2.1开始,IDE从模块化的依赖项开始错误突出显示"不在模块图"中的包.我module-info.java
在项目中添加了一个文件并添加了必需的requires
语句,但我现在无法访问src/main/resources
目录中的资源文件.
(有关完整示例,请参阅此GitHub项目.)
当我使用./gradlew run
或./gradlew installDist
+生成的包装器脚本时,我能够读取资源文件,但是当我从IDE运行我的应用程序时,我不是.
我向
JetBrains 提出了一个问题,我学到的是IDEA正在使用模块路径,而Gradle默认使用类路径.通过向我添加以下块build.gradle
,我能够让Gradle 也 ...无法读取任何资源文件.
run {
inputs.property("moduleName", moduleName)
doFirst {
jvmArgs = [
'--module-path', classpath.asPath,
'--module', "$moduleName/$mainClassName"
]
classpath = files()
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试export
将我感兴趣的资源目录作为"包",并在编译时遇到构建失败:
错误:包是空的或不存在:mydir
使用opens
而不是exports
获得相同的错误,但降级为警告.
我甚至尝试移动mydir
资源目录src/main/java
,但是这产生了相同的错误/警告,并且还导致资源没有被复制到build
目录中.
应该在Java 9中使用哪些资源,以及如何访问它们?
注意:在继续研究问题之后,我已经相当大地编辑了这个问题.在最初的问题中,我还试图弄清楚如何在资源目录中列出文件,但在调查过程中我确定这是一个红色的鲱鱼 - 首先,因为阅读资源目录只有在资源是从file:///
URL 读取(也许甚至不是),第二,因为普通文件也没有工作,所以很明显问题是资源文件一般而不是专门用于目录.
解:
按照Slaw的回答,我将以下内容添加到build.gradle
:
// at compile …
Run Code Online (Sandbox Code Playgroud)