如何在Visual Studio中的Web应用程序之间共享公共Web资源?

Jan*_*ard 9 asp.net resources web-applications visual-studio-2008

我有三个Web应用程序项目共享一个公共自定义服务器控件库.共享文件背后的代码很简单 - 它们被编译成一个dll,我使用项目引用在其他项目中引用它.但是我如何处理JavaScript,样式表和图像等文件?我试图这样做"Visual Studio方式",以便尽可能简单地理解和调试.

目前的设置有点像这样:

CommonControlsWebApp
+- CustomControls
+- resources
   +- images
   +- scripts
   +- stylesheets

WebApp1
+- resources*

WebApp2
+- resources*

WebApp3
+- resources*

*)IIS中的虚拟目录.

每个Web应用程序上的虚拟目录都指向CommonControlsWebApp中的资源目录.这是在IIS中配置的.Visual Studio无法理解此链接,因此调试需要我手动附加到IIS进程.

另一种解决方案可能是使用WebResourceAttribute包含公共dll中的每个资源.但是src当我查看我的网页来源时,这会将链接转换为WebResource.axd?d = GUID,而我担心这会让调试变得非常混乱.

第三种解决方案是使用Subversion在所有三种解决方案中包含相同的文件.团队中没有人以前尝试过这个,所以我们不确定这会有多好.

我觉得我错过了一些关于如何设置项目的明显的解决方案.有什么建议?

wom*_*omp 2

许多控件开发人员使用您描述的第二种方法捆绑他们的 Web 资源 - 将它们作为嵌入资源添加到 .dll 中。通过这种方式,您可以分发控件,而无需将一堆文件夹和文件复制到想要使用它们的每个网站,并确保文件夹路径全部匹配等。您还可以获得更轻松的本地化/国际化的优势你的资源。

然而,WebResource.axd 是一个缺点。您通常可以使用 Firebug 之类的工具“调试”URL,以查看请求实际返回的内容,但我同意,如果某些内容无法正常工作,这可能会很痛苦。另一个缺点是,如果一个服务器控件有数十个资源,特别是如果每​​个资源都被多次引用(想象一下节点上有数百个小图像的树视图),那么 URL 可能会向最终结果添加大量实际字节。 HTML 输出。

如果您的分发/本地化需求超过了优化/调试需求,我会考虑嵌入资源。

如果没有,那么您绝对可以执行#3 - 使用 Subversion 将所有内容复制到您的网站中。查看SVN 外部以了解如何设置它。现在投入一点时间学习它可能会为您节省大量时间!