您可以在 Visual Studio 构建过程中“覆盖”来自不同文件夹的代码吗?
Posted
技术标签:
【中文标题】您可以在 Visual Studio 构建过程中“覆盖”来自不同文件夹的代码吗?【英文标题】:Can you "lay over" code from a different folder during Visual Studio build process? 【发布时间】:2019-12-11 21:32:08 【问题描述】:我在一个文件夹中有一个 Visual Studio 项目,例如 C:\project_name\app_name.csproj,它的结构类似于 C:\project_name\controllers。我想告诉这个项目文件始终查看一个复写结构文件夹,比如 C:\custom_project_name\controllers\ 以查看其中是否有任何文件,如果有,请覆盖基础项目中的内容。这不会编译基础项目中的自定义文件。它会改为使用自定义项目的同名文件版本。
这可能吗?如果这在某种程度上是重复的,请提前抱歉,但在寻找答案时我什至不知道该怎么称呼它。
【问题讨论】:
也许在预构建步骤中复制文件? docs.microsoft.com/en-us/visualstudio/ide/… msbuild 允许做很多事情,因此在 csproj 中进行大量自定义是有可能的(通过生成新的 csproj,或者最坏的情况是通过一些聪明的 copying )。但正如***.com/a/57340362/3745022 所说,这绝对不是你想做的事情。很可能那里的建议正是您所需要的,但为了确保它不是 XY 问题,您最好解释一下您最终要达到的目标。 最后我尝试使用文件的自定义版本而不是基本文件。例如,在基本文件中,我可能会说 x = 1,而在自定义文件中 x = 2。因为这是业务逻辑,我需要将文件与项目完全分离,以区分什么属于基础文件和什么属于自定义设置它需要按照我上面描述的方式运行。 【参考方案1】:我稍后会为您节省一些噩梦,并建议您(可能)真正寻找的是Strategy design pattern。
这使您可以在编译时(甚至在启动时)使用更易于维护和发现的更简洁的代码来管理这些自定义实现。
-
对控制器进行编程,以将注入的依赖项用于可定制的逻辑
利用此inversion of control 通过同一接口提供默认逻辑
在启动时查找任何自定义逻辑并“使用”它,这要感谢IoC
【讨论】:
以上是关于您可以在 Visual Studio 构建过程中“覆盖”来自不同文件夹的代码吗?的主要内容,如果未能解决你的问题,请参考以下文章