我有三个 Web 应用程序项目,它们共享一个通用的自定义服务器控件库。共享文件背后的代码很容易 - 它们被编译成我在其他项目中使用项目引用引用的 dll。但是如何处理像 JavaScript、样式表和图像这样的文件呢?我正在尝试这样做“Visual Studio 方式”,以便尽可能容易地理解和调试。
当前的设置有点像这样:
CommonControlsWebApp
+- 自定义控件
+- 资源
+- 图片
+- 脚本
+- 样式表
WebApp1
+- 资源*
WebApp2
+- 资源*
WebApp3
+- 资源*
*) IIS 中的虚拟目录。
每个 Web 应用程序上的虚拟目录都指向我的 CommonControlsWebApp 中的资源目录。这是在 IIS 中配置的。 Visual Studio 无法理解此链接,因此调试需要我手动附加到 IIS 进程。
另一种解决方案可能是使用 WebResourceAttribute 将每个资源包含在公共(public) dll 中。但这会变成src
当我查看网页的源代码时,链接到 WebResource.axd?d=GUID 之类的东西,我担心这会使调试变得非常困惑。
第三种解决方案是使用 Subversion 在所有三个解决方案中包含相同的文件。团队中没有人以前尝试过这个,所以我们不确定它的效果如何。
我觉得我缺少一些关于如何设置项目的很棒的、明显的解决方案。有什么建议么?
最佳答案
许多控件开发人员使用您描述的第二种方法捆绑他们的网络资源 - 将它们作为嵌入资源添加到 .dll 中。这样,您可以分发控件,而不必将一堆文件夹和文件复制到每个想要使用它们的网站,并确保文件夹路径全部匹配等。您还可以获得更容易本地化/国际化的优势你的资源。
但是,WebResource.axd 是一个缺点。您通常可以使用诸如 Firebug 之类的东西“调试”URL,以查看从请求中实际返回的内容,但我同意,如果某些东西不能正常工作,这可能会很痛苦。另一个缺点是,如果您有几十个资源用于一个服务器控件,特别是如果它们被多次引用(想想在节点上有数百个小图像的 TreeView ) - 那么 URL 可以为最终添加大量实际字节HTML 输出。
如果您的分发/本地化需求超过您的优化/调试需求,我会考虑嵌入资源。
如果没有,那么您绝对可以执行 #3 - 使用 Subversion 将所有内容复制到您的网站中。查看 SVN Externals如何设置它。现在花一点时间学习它可能会为您节省大量时间!
关于asp.net - 如何在 Visual Studio 中的 Web 应用程序之间共享公共(public) Web 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/688784/