如果我有一些文件想在编译时从我的项目复制到.\bin\debug\
文件夹中,那么似乎我必须把它们放在项目的根目录中。将它们放入子文件夹似乎是将它们复制到.\bin\debug\
文件夹中,其结构与存储它们的结构相同。
有什么办法可以避免这种情况吗?
先说清楚如果我在ConfigFiles
文件夹中有一个MyFirstConfigFile.txt
和MySecondConfigFile.txt
,并且我将它们的 Copy to Output 设置为 Copy...,那么它们就会出现在.\bin\debug\ConfigFiles\
文件夹中。我希望它们出现在.\bin\debug\
文件夹中。
9条答案
按热度按时间kgsdhlau1#
你可以通过一个post build事件来实现这一点。将文件设置为编译时不执行任何操作,然后在宏中将文件复制到所需的目录。
下面是一个构建后宏,我认为它可以通过将Configuration目录中的所有文件复制到根构建文件夹中来工作:
4szc88ey2#
您可以在csproj上使用MSBuild任务,就像这样。
编辑您的csproj文件
lstz6jyr3#
您还可以将文件或链接放在解决方案资源管理器的根目录中,然后设置文件属性:
Build action = Content
和
Copy to Output Directory = Copy if newer
(例如)对于链接,按住shift和control键,将文件从windows资源管理器拖到解决方案资源管理器中。
u4vypkhs4#
我个人更喜欢这种方式。
修改
.csproj
以添加或者概括地说,如果你想复制所有的磁盘和文件,你可以这样做:
ryhaxcpt5#
从子文件夹复制到子文件夹
lkaoscv76#
您希望在项目中使用后期生成事件。您可以在那里指定输出,并且有经常使用的宏值,如项目路径,项目名称等。
o3imoua47#
您可以使用项目的PostBuild事件。构建完成后,您可以运行DOS批处理文件并将所需文件复制到所需文件夹。
oxiaedzo8#
为了寻找解决方案,我尝试了一个命令“xcopy /y $(ProjectDir)yourfile $(ProjectDir)$(OutDir)”,但它不是操作系统不可知的,所以当它在Linux上执行时,我遇到了问题。
我试了这个。它是操作系统不可知的:
pb3skfrl9#
我在搜索“在编译时将文件复制到应用程序文件夹”时发现了这个问题。OP似乎已经对此进行了排序,但如果您没有:
在Visual Studio中右键单击文件,选择属性,然后将选项“复制到输出”更改为“始终”。参见http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx