因此,在 Visual Studio 中,我在 GitHub 上有一个项目,其 app_data 目录中有一个 mdf 文件。
关于源代码控制和构建,我如何处理这个 .mdf 文件?
糟糕的解决方案 1 - 签入空的 .mdf 文件
我可以创建一个存根 mdf 并将其签入。但我不喜欢这个解决方案。一旦我签入,那么每次更改都会显示为已更改,并且我必须在每次后续签入时排除 .mdf。更糟糕的是,如果我忘记排除它,那么我必须恢复签入。
糟糕的解决方案 2 - 忽略 *.mdf 文件
我可以忽略 mdf 文件。但是现在,当有人检查我的解决方案并单击构建时,构建失败。 手动创建 SQL 文件非常容易。但前提是你知道那是你应该做的。 此外,许多潜在用户/贡献者可能会查看我的开源项目,单击构建,看到它失败,然后决定继续前进。
目前我正在使用错误的解决方案1。
平庸的解决方案 1 - 复制另一个签入的文件
将 mdf 文件签入到项目中的某个位置。 运行复制命令。 我可能不得不接受这个选择。 我希望这只是一个脚本想法。
更好的解决方案 - 如果缺失,则预构建操作来构建 mdf 我正在努力实施这个解决方案。
在 Visual Studio 项目的预构建操作中,我有以下内容:
IF NOT EXIST "$(ProjectDir)App_Data\SqlRepository.mdf" (
REM Command to create SqlRepository.mdf here
)
但是 Visual Studio 正在添加 *.mdf。如果文件丢失,应该有一个脚本来创建存根。 Visual Studio 在做什么?
因此,有效的答案将包括:
所以我的建议是使用平庸的解决方案#1。
<Exec Condition="'$(OS)' == 'Windows_NT'" Command="YOUR COPY COMMAND HERE" />
<Exec Condition="'$(OS)' != 'Windows_NT'" Command="YOUR COPY COMMAND HERE" />
我以为我最近找到了更好的解决方案,但我没有。我正在学习项目和项目模板以及它们的新 dotnet 版本。无论如何,要在 Visual Studio 中添加 MDF 文件,我可以右键单击文件夹,选择“添加”|“新建项目...,然后选择基于服务的数据库。这意味着它是一个项目模板。所以我在项目模板中搜索并找到了这个:
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\ItemTemplates\CSharp\Data\1033\EmptyDatabase\Database.mdf
所以我现在可以只使用复制命令。然而,这并不比平庸的解决方案 #1 更好。此解决方案存在问题: