SlowCheetah:类库项目中的转换文件未复制到引用的项目中

Posted

技术标签:

【中文标题】SlowCheetah:类库项目中的转换文件未复制到引用的项目中【英文标题】:SlowCheetah: Transformed files from class library project not copied to the referenced projects 【发布时间】:2014-01-06 20:46:24 【问题描述】:

场景:

我有一个带有自定义 .config 文件的类库项目。这些配置文件的构建操作设置为“内容”和“始终复制”。然后在同一解决方案中的至少 4-5 个控制台应用程序中引用此库项目。构建解决方案时,类库的程序集和自定义配置文件被复制到引用的项目 bin 文件夹中。

我想做什么:

使用 SlowCheetah 转换自定义配置文件

问题:

虽然 SlowCheetah 会转换类库项目中的配置文件,但它不会将转换后的文件复制到引用的项目中。即它总是复制源/原始文件。

找到了几个其他线程,但没有一个是基于 SlowCheetah 的解决方案,任何建议都会有所帮助。请注意,我使用的是 Install Shield Limited Edition,因此该解决方案需要适用于 .msi/setup 文件。另外,我不想链接文件并对链接文件应用转换,因为我必须对所有引用的项目进行相同的转换。

谢谢

【问题讨论】:

我尝试将带有 xcopy 的后期构建步骤放入控制台项目,但它仍然复制了未转换的版本。在这一点上我唯一能想到的是,这是某种时间问题。也许转换发生在构建后?! 这里有同样的问题,对我来说它的 NLog.config 文件我也添加了转换。同样的问题,文件已转换但未复制 【参考方案1】:

给定 ClassLibararyA 引用 ClassLibraryB:

确保两个类库中的配置都命名为 App.config 使用 SlowCheetah 为两个 App.config 配置转换(即使您只关心一个) 构建

在 ClassLibraryA 的输出文件夹中,您将找到 ClassLibraryB.dll.config(ClassLibraryB 转换后的 App.config)。

【讨论】:

OP 提到了我认为不是 app.config 文件的“自定义配置文件”。我在 app.configs 上都有一个 SlowCheetah 转换,并且我同意 ClassLibraryB 的配置在被复制到 ClassLibraryA 的 bin 文件夹之前进行转换。但是,ClassLibraryB 中还有其他具有 SlowCheetah 转换的 .config 文件。它们的“复制到输出目录”属性设置为“始终复制”或“如果更新则复制”。转换在它们进入 ClassLibraryB 的 bin 文件夹之前应用,但不应用于最终在 ClassLibraryA 文件夹中的版本。这就是这里的问题。【参考方案2】:

我知道这不是一个解决方案,但这是我在这个问题上发现的,因为我遇到了同样的问题。在此处添加此内容,因为添加到评论中太过分了,希望他们最终会在他们关闭错误时成为答案。

我知道慢速猎豹处于维护模式,但他们仍在修复错误,而且看起来微软将接手该项目,因此希望他们能修复此问题。

在这里发现了这个案例,他们承认这是一个错误,但似乎他们解决了一个不同的问题。

https://github.com/sayedihashimi/slow-cheetah/issues/34

所以我在这里打开了一个新的错误报告

https://github.com/sayedihashimi/slow-cheetah/issues/174

【讨论】:

以上是关于SlowCheetah:类库项目中的转换文件未复制到引用的项目中的主要内容,如果未能解决你的问题,请参考以下文章

在安装项目中使用 SlowCheetah 的 app.config 转换

slowcheetah 不适用于 app.config

类库中的引用不会复制到正在运行的项目 bin 文件夹中

引用的 DLL 未复制

无法从程序集中加载“SlowCheetah.Xdt.TransformXml”任务

有没有办法使用 Slow Cheetah 来转换 Azure Worker Role 中的 app.config?