2017-04-09 103 views
0

这假设是一个简单的问题;不要作为堆栈溢出问题发布!vb.net连接vs嵌入资源奇怪的结果 - VS 2017 CE

本文以下:How to: Create Embedded Resources

  1. 我创造了一个新的和新鲜的Form1.vb在Visual Studio 2017年社区版测试。
  2. 添加了一个大的testfile.WAV文件作为测试资源。
  3. 检查链接类型设置为默认值:“在编译链接 时间”Default Value
  4. 清理/构建/重建应用程序。

  • 仍然没有不管我怎么做,该result.exe文件是如此之大,反映了大testfile.wav文件的大小,并不能在任何情况下找到wav文件作为单独的链接资源档案在bin\Debug文件夹!

  • 试图改变几乎所有地方;但没有成功!

  • 我想到的是让在bin\Debug单独链接,而不是嵌入的文件夹都result.exetestfile.wav


看起来很怪异吗?这是VS中还是应用程序设置中的错误?

谢谢你这么多 知道的任何暗示

注意:我试图达到的创建我的应用程序,用户可以选择外观不同的主题;我的努力突破了上述情况。如果它将包含它的资源,那么result.exe以10s为单位结束没有意义!

回答

0

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文件中,因此您只需复制该文件,而不是每个包含的文件。

+0

谢谢,但是有两种选择的原因是什么? '在编译时链接'和'嵌入.resx.'。为什么输出总是一样的?是否有一个具体的原因,为什么改变这个选项不会改变什么?通过'My.Resources.MyFile'访问资源比在代码中使用资源更方便。 – wpcoder

+0

@wpcoder:请参阅我的编辑。 –

+0

@wpcoder:这两个选项只在设计时才有所作为。编译应用程序时没有区别。 –