我的资源文件有问题。
我有两个项目的解决方案。第一个项目包含ImageResource.resx
文件,其中包含我使用的图像。此项目中的每个Form
都可以从设计器访问此文件。但我可以在设计器ImageResource.resx
文件中看到它从第二个项目中使用它(参考第二个项目存在)。
我添加了ImageResource.resx
文件作为第二个项目的链接。我在设计师看到了它!但是,当我在第二个项目中使用来自此资源的图像时,Visual Studio修改了我的原始文件(它设置名称空间,以及其他..),我的解决方案中断了。此外,Visual Studio告诉我,ImageResource.resx
和first_project.dll
second_project.dll
{{1}}
任何人都可以帮助我如何在项目之间正确使用共享资源?
答案 0 :(得分:31)
下一步包括将此图标添加到其他项目。请注意重要区别,您需要将此图标添加为链接!
添加链接可避免资源重复。在同一解决方案中创建一个新项目并为其命名,例如主要。在这个新项目中创建一个文件夹,将其命名为 Resources (我们的逻辑名称)。然后右键单击此文件夹,选择添加现有项... ,然后从共享项目文件夹中选择图像文件。请务必在此处使用添加为链接!如果正确完成,新添加文件的图标将略有不同(见下文):
添加资源的图标必须如下所示
这是在项目之间共享图标必须执行的五个简单步骤。你可能会问“这有什么好处?”好处是:
答案 1 :(得分:2)
这对我没有用,我找到了另一种(VS2015 +)方法。 见https://stackoverflow.com/a/45471284/4151626
简而言之,共享项目直接包含在外围项目中。因此,即使IDE不支持共享项目中的<Resource>
元素。可以通过文本编辑器将<Resource>
个元素添加到共享项目中。然后在构建期间将它们合并到外围项目中。
(为超链接道歉。我只是为了清晰起见重新发布答案,但是stackoverflow编辑严厉打击这个,删除重复的答案以便将你从???中删除。)
答案 2 :(得分:1)
您可以使用符号链接将文件共享到多个文件夹吗?
windows:
mklink linked_location\ImageResource.resx original_location\ImageResource.resx
C:\Users\preet>mklink
Creates a symbolic link.
MKLINK [[/D] | [/H] | [/J]] Link Target
/D Creates a directory symbolic link. Default is a file
symbolic link.
/H Creates a hard link instead of a symbolic link.
/J Creates a Directory Junction.
Link specifies the new symbolic link name.
Target specifies the path (relative or absolute) that the new link
refers to.
答案 3 :(得分:1)
如果资源文件在项目之间真正共享,则应将其放在共享项目中。
Solution 'Sample'
Project Sample.Data
Project Sample.Business
Project Sample.UI
Project Sample.Resource //shared resources are put in a shared project
答案 4 :(得分:0)
如果资源不是公开,则无法看到该资源,并且默认设置为“朋友”。您可以在可视设计器(右上角)中设置“访问修改器”。