asp.net - 如何在 Visual Studio 中的 Web 应用程序之间共享公共(public) Web 资源?

标签 asp.net visual-studio-2008 web-applications resources

我有三个 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/

相关文章:

c# - 在 GridView 的绑定(bind)字段中显示多个数据字段

c++ - MSVC 的问题包括

web-applications - 现在N层架构意味着什么?

java - 使用 [context].xml 和 web.xml 来配置网络应用程序

javascript - 向 Dropzone.js 中的每个文件添加表单字段

asp.net - ASP : CommandArgument

c# - 反序列化 JSON 的更好方法?

c# - 如何使用 Log4Net 将数据发送到 MSMQ 队列?

java - 是否可以抛出 java.lang.Error?

c# - 阅读 pop3 电子邮件,为什么不阅读电子邮件?