c# - 推荐用于在多台计算机之间共享项目的 C# .Net 项目配置

标签 c# .net visual-studio

我是唯一一位从事 ASP.Net MVC 项目的开发人员,但会在开发过程中在多台计算机上共享该项目。我正在使用 VS 2008,并且将针对 Subversion 或 Git 进行备份。我正在寻找有关如何配置项目依赖项和 web.config 文件的建议,以减轻系统之间转换的痛苦。

我的 web.config 文件提供的数据库连接字符串在系统之间可能有所不同。建议使用什么方法来推迟此操作,使其特定于开发环境?

我的测试项目依赖于 NUnit、Moq 等库。如果这些库的位置在开发系统中不同,这是否会破坏引用?如果是这样,我该如何缓解这个问题?

最佳答案

My web.config file provides the database connection strings that may differ between the systems. What is recommended method to defer this such that it is specific to the dev environment?

对于 App|Web.config,我们执行以下操作:

  1. 将 web.config 添加到 svn:ignore
  2. 将 web.config 复制到 web.default.config
  3. 将 web.default.config 添加到 svn
  4. 将以下内容添加到您的 BeforeBuild 目标

<Target Name="BeforeBuild">
   <CallTarget Targets="SetupWebConfig" />
</Target>
<Target Name="SetupWebConfig" Condition="!Exists('Web.config')">
    <Copy SourceFiles="Web.default.config" DestinationFiles="Web.config" />
</Target>

FWIW,我们还有另一个目标,它在 SetupWebConfig 之前被调用,如果构建服务器正在编译项目,它会删除 web.config,这允许包含对 web.default.config 的更改。

您可以使用 Web.default.config 中的 token 和一些正则表达式来自动替换 Web.config 中的内容。这也可以捆绑到SetupWebConfig 目标中。如果您想查看示例,请告诉我。我们这样做是为了在 CI/构建服务器上设置连接字符串和类似的东西。

My test project is dependent on NUnit, Moq, among other libraries. If the location of these libraries differs across the dev systems does this break the references? If so, how can I mitigate this issue?

我的建议是将库包含在您的 subversion/git 存储库中,将它们放在公共(public)区域而不是您的项目中,这样您就可以重用它们。使用相对 svn:externals 引用它们(记住将外部设置为特定的修订号)。这解决了您的问题,并且允许您细粒度控制要使用的每个工具的版本,这有利于在分支上测试和维护已发布的产品。

关于c# - 推荐用于在多台计算机之间共享项目的 C# .Net 项目配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1541840/

相关文章:

c# - 如何将一个类中的对象添加到另一个类的列表中。

c# - e.NewWindow = (CoreWebView2)sender 仍然会产生单独的实例

.net - 为什么 "await LoadAsync()"会卡住 UI 而 "await Task.Run(() => Load())"不会?

.net - Azure key 保管库。怎么运行的?

angularjs - Visual Studio 2015 显示 'Debug is Starting'

c# - 如何在 ASP.NET MVC 中拥有 "service"页面?

c# - 如何使用 C# 中的服务帐户登录 Google API - 无效凭据

c# - 如何将秒转换为时分秒?

windows - 有没有办法将调试信息重新添加到我有符号的现有 Windows 可执行文件中?

sql-server - sql server如何让外键成为主键