【问题标题】:sharing source files between two projects, not whole directory/folder在两个项目之间共享源文件,而不是整个目录/文件夹
【发布时间】:2016-10-10 06:51:55
【问题描述】:

嗨,我有两个项目,比如说 A 和 B,它们有相同的源文件,现在我希望如果一个项目中的文件更改它反映在另一个项目中。简而言之,我想要所有这些共享源文件的一份副本,

重要,由于项目结构,这些文件位于不同的文件夹中,我无法将它们放在一个公共文件夹中。

项目 A
-- 视图(文件夹)
-- 登录.cs
-- Stock.cs
-- 控制器(文件夹)
-- 登录控制器.cs
-- StockController.cs

项目 B
-- 视图(文件夹)
-- 登录.cs
-- WholeSellers.cs
-- 控制器(文件夹)
-- 登录控制器.cs
-- WholeSellersController.cs

现在在上面的项目中,您可以看到 login 和 LoginController 是共享文件,但位于不同的文件夹中,由于项目文件夹结构的限制,我无法将它们放在一个文件夹中,也无法创建共享的单独项目,因为它们无法单独构建。

我使用了 Git 子模块,但它创建了单个公共文件夹,这不是我的情况,还有其他解决方案吗?请帮帮我。

【问题讨论】:

  • 创建一个被两个项目引用的库并将公共文件放在那里,或者这个解决方案不适合你?
  • 不知道 git/svn 工具,但我认为更好的选择是创建第三个项目,其中包含共享部分并且都引用它
  • 你用的是git还是svn?您似乎已经使用了这两个标签。另外,我不相信“c#”是一个相关标签。你在使用 Visual Studio 吗?这提供了在项目之间共享文件的方法。
  • “项目文件夹结构限制”——解释一下。 “无法创建共享的单独项目,因为它们不能单独构建”——那么您可能还应该解决一个依赖问题。将共享组件拉入一个单独的项目(并查看它们附带的内容)是开始这样做的好方法。

标签: c# git svn


【解决方案1】:

考虑将通用功能提取到 nuget 包中,并将其安装在两个项目中。

创建 nuget 包:https://blogs.msdn.microsoft.com/mvpawardprogram/2016/06/28/creating-nuget-packages/

【讨论】:

  • 我同意提取到另一个项目,两者都将使用但不会将其作为 nuget 包。
  • 我不能解压到不同的项目,因为如果我分开它们就不能构建,而且由于项目结构的限制,我不能改变它的结构,这是两个winform桌面项目,我正在考虑一些可以为我管理它的代码管理系统,比如 git
【解决方案2】:
  1. 创建一个新的共享项目“Project Core”
  2. 将共享代码移到那里。控制器“LoginController”并查看“Login.cs”
  3. 将“LoginController”重命名为“BaseLoginController”
  4. 从“BaseLoginController”继承项目 A 和 B 中的 LoginController
  5. 使用虚拟路径提供程序重用 MVC 视图
项目A -- 视图(文件夹) --股票.cs -- 控制器(文件夹) -- 登录控制器.cs -- StockController.cs 项目 B -- 视图(文件夹) -- WholeSellers.cs -- 控制器(文件夹) -- 登录控制器.cs -- WholeSellersController.cs 项目核心 -- 视图(文件夹) -- 登录.cs -- 控制器(文件夹) -- BaseLoginController.cs

Reuse MVC Views Using a Virtual Path Provider

【讨论】:

  • 这些是winform项目,我不能改变项目结构
  • Winforms?行。所以你需要告诉我们你使用什么框架? Winforms 不提供开箱即用的 MVC 结构。视图要么是表单,要么是用户控件。最接近您的情况的是 MVVM with reactiveUI 或 devexpress 的 MVVM。 ViewModel 将充当控制器。思路应该是一样的。创建一个新的项目核心并共享视图和视图模型
  • 是的,我正在使用 DevExpress MVVM,但我不想创建其他项目(其冗长的任务)并移动所有共享代码,最简单的是如果我与 git 共享这些文件,所以当它们改变一个项目,其他人会得到他们
【解决方案3】:

创建指向您的文件夹及其文件的符号链接将解决我想的问题。

ln -s /path/to/folderContainingFiles /path/to/symlink

【讨论】:

  • 这些在 git 中?如果是的话,你能详细解释一下吗?我正在使用 TortiseGit 客户端
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 2020-03-16
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
相关资源
最近更新 更多