【发布时间】:2014-08-29 17:44:59
【问题描述】:
我有两个 C# 项目,其中一个是库,其中包含一个在 PreBuildEvent 期间修改的数据库文件。其内容已正确更新并在此库项目的 bin\Debug 文件夹中可用。
出现问题是因为在另一个项目中,UI 应用程序中,数据库文件与我在 PreBuildEvent 中的更改之前相同。
在下面的示例中,我将使用一个文本文件(它的行为相同):
ProjectLib.csproj
- TextFile1.txt
- 构建操作:内容
- 复制到输出目录:如果更新则复制
预构建事件:
echo test > $(TargetDir)TextFile1.txt
ProjectLib\bin\Debug中TextFile1.txt的内容:
test
Application.csproj
Application\bin\Debug 中 TextFile1.txt 的内容:
"empty"
从哪里选择数据库文件?来自$(ProjectDir) 或$(TargetDir)? 编辑: 数据库文件是从$(ProjectDir) 中挑选出来的。您可以看到使用 msbuild 执行构建。最后有一个名为_CopyOutOfDataSourceItemsToOutputDirectory 的目标,这显示源为$(ProjectDir)。
有没有办法修改 PreBuildEvent 中的文件 - 库 bin\Debug 中的文件 - 并将其正确输出到应用程序 bin\Debug?
【问题讨论】:
-
我通过从
$(ProjectDir)获取文件解决了这个问题。首先,我将文件添加到具有不同扩展名 (.bkp) 的项目中,然后在 PreBuildEvent 中添加了一个文件副本。 bkp 文件被复制到正确的名称。在项目中,我添加了对这两个文件的引用(即使在构建之前不存在正确的文件)。对于我设置为无的 bkp 和其他作为内容。 -
如果有人为此提供更好的解决方案,我会留下这个问题。