【问题标题】:PreBuildEvent not reflecting in project dependenciesPreBuildEvent 未反映在项目依赖项中
【发布时间】: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 和其他作为内容。
  • 如果有人为此提供更好的解决方案,我会留下这个问题。

标签: c# msbuild csproj


【解决方案1】:

你为什么要设计你的构建系统让两个独立的项目覆盖一个关键依赖项?

【讨论】:

  • 因为数据库文件对于库和示例应用程序都是可交付的。但是即使我把数据库文件改成与库相同的项目,部署示例应用时也会出现同样的错误。
猜你喜欢
  • 1970-01-01
  • 2016-12-03
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
相关资源
最近更新 更多