我有一个常见的 asp.net mvc 元素。
我有一个包含 Handlebars 模板、javascript 模块和样式表的模块。 该模块用于不同的页面并放置在 div 标签内的某个位置。
新要求是将此模块用于其他解决方案。但我不想只复制并粘贴与模块相关的所有文件(js、html、css),因为很难将其维护到不同的解决方案中。
所以,我的问题是我应该以什么方式组织这个模块,使其只声明一次并用于不同的解决方案。
最佳答案
我以前有过同样的需求,我是这样处理的:
移动您的共享内容
在我的解决方案中,我添加了一个新的 Shared
文件夹并创建了一个 Shared
元素。您不一定要转移到新元素中,我这样做是因为共享元素还包含共享 MVC 逻辑。
将链接的共享文件添加到解决方案
重要的是要知道此步骤是可选的,它只是帮助开发人员确保文件仍在预期的位置。现在您有例如:Project1
、Project2
和 Shared
。现在,在 Project1
(例如)中,分别添加您的文件。但请按照以下步骤操作:
- 右键单击要将文件添加到的文件夹
- 将鼠标悬停在
Add
上,然后选择Existing Item
- 导航到
Shared
元素中的文件并选择该文件 - 在点击“添加”之前,请注意箭头
- 单击此按钮,然后选择
添加为链接
这样做的好处是,当您在 Project2
中的解决方案资源管理器中单击该文件时,它将在 Shared
中打开该文件。
添加预构建事件
在每个使用Shared
文件的元素中,您需要添加Pre Build Events
。目前,尽管该元素包含对共享文件的引用,但在您运行该元素时它实际上不会执行任何操作。解决方案是构建事件:
- 右键单击您的元素并选择
Properties
- 在菜单中选择
Build Events
在
Pre-build 事件命令行
部分输入以下内容:xcopy/R/E/Y "$(SolutionDir)SharedProject\Scripts""$(ProjectDir)Scripts"
解释一下:这将复制您共享元素中脚本目录的内容,并将其添加到(或替换)您当前元素的脚本目录中。您需要为每个文件夹添加一行(例如 HTML、CSS 等)
关于javascript - Asp NET在不同解决方案中共享html组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28605494/