Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 当与其他程序员共享程序集dll时,我应该如何处理内容文件?_.net_Visual Studio_Assemblies - Fatal编程技术网

.net 当与其他程序员共享程序集dll时,我应该如何处理内容文件?

.net 当与其他程序员共享程序集dll时,我应该如何处理内容文件?,.net,visual-studio,assemblies,.net,Visual Studio,Assemblies,我有一个库项目,其中包含一些内容文件(例如,XML和模式文件、图像文件等),所有构建操作都设置为内容(始终复制) 此库项目位于Visual Studio解决方案中,该解决方案还具有引用库的测试应用程序(WPF) 构建解决方案时,从属库项目中的所有内容文件都会复制到测试应用程序的bin文件夹中。(它们也会被复制到库项目的bin文件夹。) 今天,我把我的库项目生成的汇编dll交给另一个程序员,供他参考。然而,我甚至没有想到这是不够的。我还需要给他内容文件。我就这么做了,他把它们加入到他的项目中 这个

我有一个库项目,其中包含一些内容文件(例如,XML和模式文件、图像文件等),所有构建操作都设置为内容(始终复制)

此库项目位于Visual Studio解决方案中,该解决方案还具有引用库的测试应用程序(WPF)

构建解决方案时,从属库项目中的所有内容文件都会复制到测试应用程序的bin文件夹中。(它们也会被复制到库项目的bin文件夹。)

今天,我把我的库项目生成的汇编dll交给另一个程序员,供他参考。然而,我甚至没有想到这是不够的。我还需要给他内容文件。我就这么做了,他把它们加入到他的项目中

这个解决方案有效,但我对此感到不舒服。我不喜欢内容文件和他的项目文件混在一起。这使得它们更有可能被意外更改或删除

所以,我希望在涉及内容文件时,我能得到一些关于如何与其他程序员共享库的建议

注意:我并不是在试图隐藏内容文件(引用此库的程序员有权访问它们实际上很重要),但我希望它们与引用项目保持分离,但在编译项目时仍能正确复制到bin文件夹。我想我要说的是,我希望他们的解决方案中有库项目,而不是代码文件和xaml文件

谢谢

编辑:

我想到的一个想法是,我可以将我的库项目中的文件夹结构和内容文件复制到一个新的类库项目中。然后,任何引用我的库项目的人都可以在他们的解决方案中添加这个最小类库。他们仍然需要将dll作为一个单独的步骤引用,但这肯定比当前的解决方案要好。也许我甚至可以编写一个生成后事件,自动将库项目中的所有内容文件复制到最小类库中。(现在,我只需要研究如何实际编写构建事件:))。欢迎评论

编辑2:


我在我最初编辑的基础上提出了一个解决方案,我想我会很满意的。请参阅下面我的答案。

将内容文件嵌入到资源中。然后你就可以用它来对付它们了。它使程序集的可移植性大大提高—您在执行时不再依赖文件系统位置。

我决定从库项目中删除内容文件,并将其放入一个新的仅包含内容的“仅包含内容”库项目中。如果有人需要使用库项目,我只共享dll和仅限内容的库项目文件夹。这样,解决方案文件夹中的项目和内容文件之间的关系保持完全相同,并且在我编译时所有内容都会自动更新。

@Jon,这肯定会解决可移植性问题,但我需要该库的“客户”能够查看内容文件,这就是为什么我一开始就让它们成为内容。@DanThMan:你能不能编写一个单独的工具(或方法)来为那些需要它们的人提取资源作为单独的文件,但为那些不需要它们的人保留在程序集中?@Jon,嗯,您的意思是为我的库项目构建一个自定义安装程序,将dll和内容文件直接安装到引用应用程序的bin文件夹中吗?我相信这样的事情是可能的,但听起来有点像是一项事业。不是一个安装程序,只是一个单独的可执行文件。部分问题是我不知道您的库是为什么服务的,您的客户是谁,或者他们为什么需要查看文件系统中的文件。@Jon,这有点难以解释,但问题之一是我有一个XML架构集,其中包含引用应用程序和引用库中的xsd文件。具体来说,应用程序使用元素扩展引用的xsd文件,向库所需的基表添加额外的“table”元素。这将产生一个包含所有表和键/keyref的大模式,以建立引用完整性。因此,引用应用程序需要从引用的库访问xsd文件。