vb.net 链接与嵌入式资源奇怪的结果 - VS 2017 CE
vb.net linked vs embedded resources weird result - VS 2017 CE
这应该是一个简单的问题;不得在堆栈溢出中作为问题发布!
关注这篇文章:How to: Create Embedded Resources
- 我创建了一个全新的
Form1.vb
以在 Visual Studio 2017 社区版中进行测试。
- 添加了一个大
testfile.WAV
文件作为测试资源。
- 检查 link 类型设置为默认值:“编译时链接
时间" Default Value.
- Clean/Build/Rebuild 应用程序。
还是不管我怎么弄,result.exe
文件太大了,反映了testfile.wav
文件的大小,而且在任何情况下都找不到wav文件作为 linked 资源在 bin\Debug
文件夹中的单独文件中!
试图改变几乎所有地方的一切;还是没有成功!
我期望 result.exe
和 testfile.wav
在 bin\Debug
文件夹中分别 linked 而不是嵌入。
我觉得很奇怪?是 VS 中的错误还是应用程序设置中的错误?
非常感谢
感谢任何提示
注意:我试图达到的目的是为我的应用程序创建一个不同的主题,用户可以在其中选择外观;我的努力在上述情况下中断了。如果 result.exe
中包含资源,那么以 10 MB 结尾是没有意义的!
TL;DR: 如果你想把它作为一个松散文件,那么你需要把它作为一个松散文件。资源始终嵌入在应用程序中。
如果您通过 Project Properties > Resources
添加资源,那么它将始终嵌入到您的应用程序中。
如果你想把它作为一个松散的文件,那么你只需通过 Add Existing Item
将它导入你的项目并将项目的 Copy to Output Directory
属性 设置为 Copy Always
.然后您通过执行以下操作来引用它:
Dim WavPath As String = Path.Combine(Application.StartupPath, "yourfile.wav")
Dim WavFile As Byte() = File.ReadAllBytes(WavPath)
链接与嵌入式仅在设计时有所不同。链接的资源仍然嵌入在您的应用程序中,但在设计时您可以编辑它们并可以轻松地添加或删除其他资源。
然而,即使在设计时,嵌入式资源也会嵌入到 .resx
文件中,要编辑此类资源,您必须导出它们或将它们更改为链接资源。当您需要在多个项目中共享相同的资源时,通常会使用嵌入式资源。然后资源嵌入到 .resx
文件中,因此您只需复制该文件,而不是每个包含的文件。
这应该是一个简单的问题;不得在堆栈溢出中作为问题发布!
关注这篇文章:How to: Create Embedded Resources
- 我创建了一个全新的
Form1.vb
以在 Visual Studio 2017 社区版中进行测试。 - 添加了一个大
testfile.WAV
文件作为测试资源。 - 检查 link 类型设置为默认值:“编译时链接 时间" Default Value.
- Clean/Build/Rebuild 应用程序。
还是不管我怎么弄,
result.exe
文件太大了,反映了testfile.wav
文件的大小,而且在任何情况下都找不到wav文件作为 linked 资源在bin\Debug
文件夹中的单独文件中!试图改变几乎所有地方的一切;还是没有成功!
我期望
result.exe
和testfile.wav
在bin\Debug
文件夹中分别 linked 而不是嵌入。
我觉得很奇怪?是 VS 中的错误还是应用程序设置中的错误?
非常感谢 感谢任何提示
注意:我试图达到的目的是为我的应用程序创建一个不同的主题,用户可以在其中选择外观;我的努力在上述情况下中断了。如果 result.exe
中包含资源,那么以 10 MB 结尾是没有意义的!
TL;DR: 如果你想把它作为一个松散文件,那么你需要把它作为一个松散文件。资源始终嵌入在应用程序中。
如果您通过 Project Properties > Resources
添加资源,那么它将始终嵌入到您的应用程序中。
如果你想把它作为一个松散的文件,那么你只需通过 Add Existing Item
将它导入你的项目并将项目的 Copy to Output Directory
属性 设置为 Copy Always
.然后您通过执行以下操作来引用它:
Dim WavPath As String = Path.Combine(Application.StartupPath, "yourfile.wav")
Dim WavFile As Byte() = File.ReadAllBytes(WavPath)
链接与嵌入式仅在设计时有所不同。链接的资源仍然嵌入在您的应用程序中,但在设计时您可以编辑它们并可以轻松地添加或删除其他资源。
然而,即使在设计时,嵌入式资源也会嵌入到 .resx
文件中,要编辑此类资源,您必须导出它们或将它们更改为链接资源。当您需要在多个项目中共享相同的资源时,通常会使用嵌入式资源。然后资源嵌入到 .resx
文件中,因此您只需复制该文件,而不是每个包含的文件。