如何在C#构建时将其他文件包含到输出目录中?

59

我有一些库文件需要我的应用程序才能正常工作。
我的应用程序包括设置和部署。

我已经知道,为了在安装时将库文件添加到应用程序的输出目录中,我只需在构建之前在.NET IDE内引用这些库即可……唯一的问题是这些库无法被引用……因此,我需要能够将这些库复制到我的应用程序的安装目录中……目前,我是手动复制这些库...

补充说明

我还尝试将这些库文件作为现有项目添加到我的项目中,并在其属性上标记每个库文件的复制到输出目录仅在更改较新时复制,但仍未得到所需的解决方案。

更新1

谢谢你们的帮助,它帮助我解决了问题,我设法让你们发布的解决方案都起作用了,除了一个...... @Matthew Watson的帖子……我甚至设法找到了一个解决方案,所以我也想与你们分享。

这是我做的:

  1. 我打开了我的应用程序中的设置和部署项目。
  2. 在应用程序文件夹树下,右侧,我右键单击...
  3. 然后点击添加..
  4. 然后点击文件
  5. 然后浏览我想要添加到安装目录中的文件
  6. 并单击打开。

但出于好奇...我仍在尝试使@Matthew Watson发布的内容起作用...

更新2

昨天我忘了更新这篇文章,我已经设法让Matthew Watson的解决方案起作用了。再次感谢你们所有人的帮助。


1
使用PostBuild事件并创建一个*.bat或*.cmd来自动化它。 - David
为什么“复制到输出目录”选项没有提供您想要的解决方案? - Gerald Versluis
@David 谢谢,我现在会学习如何使用那种方法。 - chad
@chad 你可以使用Visual Studio的设置和部署项目来完成这个! :) - Gerald Versluis
1
那么你应该能够配置所有可以复制到安装文件夹的文件,对吧?看看这个链接;虽然这是一篇旧文章,但我认为实现方式并没有改变太多。https://www.simple-talk.com/dotnet/visual-studio/getting-started-with-setup-projects/ - Gerald Versluis
显示剩余6条评论
2个回答

96
您可以向项目中添加文件并选择它们的属性:"Build Action""Content""Copy to output directory""Copy Always""Copy if Newer"(后者更可取,因为否则每次构建项目时都会完全重新构建)。
然后这些文件将被复制到您的输出文件夹中。
这比使用后期构建步骤要好,因为Visual Studio将知道这些文件是项目的一部分。 (这影响需要知道要添加到ClickOnce数据中的文件的ClickOnce应用程序等内容。)
您还可以更轻松地查看哪些文件位于项目中,因为它们将与源代码文件一起列在列表中,而不会隐藏在后期构建步骤中。 并且还可以更轻松地使用它们进行源代码管理。
一旦您已将 "Content" 文件添加到项目中,则可以按如下方式将其添加到Visual Studio 2010安装和部署项目中:
进入您的安装程序项目,并将名为"Content Files"的项目输出添加到"Application Folder"输出中。 如果在添加后右键单击Content Files,则可以选择“ outputs”并查看它将要复制的内容。
请注意,Visual Studio 2012不支持安装和部署项目。

2
我刚刚按照您的说法去做了,但是库文件仍无法复制到安装目录中... 这里我漏掉了什么步骤吗? - chad
在我的项目中,我通常会按照以下方式添加设置和部署项目:我点击文件>添加>新建项目然后,我选择设置项目之后,设置项目将启动。我会右键单击应用程序文件夹,然后单击添加,再单击项目输出... - chad
我想在我的上一个项目完成后开始购买VS2012并学习它的新功能,哈哈,再次感谢。 - chad
@Chad 实际上WiX并不是来自微软,而且你可以在VS2010中使用它,所以提前了解一下可能会很值得。你不想处于升级到VS2012的位置,突然发现你没有安装程序!(顺便说一句,WiX是免费的)虽然有一个免费版本的InstallShield Lite随VS2012一起提供,据说可以自动升级您的安装项目,但对我们来说根本不起作用!所以要小心! - Matthew Watson
这对我非常有效。我没有任何安装程序问题,因为我倾向于将我的应用程序部署为点击即可运行。 - Mark Ainsworth
显示剩余3条评论

4

谢谢您的快速回复,我现在会尝试学习如何使用那个方法。 - chad
1
@chad:这没什么特别的,只是一份普通的批处理脚本,你可以在构建时运行它。 - Tigran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接