如果我想将一些文件从我的项目复制到编译的.\bin\debug\
文件夹中,那么我似乎必须将它们放入项目的根目录中。将它们放入子文件夹似乎将它们复制到与它们存储在同一结构中的.\bin\debug\
文件夹中。
有什么方法可以避免这种情况吗?
请注意:如果我在MyFirstConfigFile.txt
文件夹中有MySecondConfigFile.txt
和ConfigFiles
,我将复制到输出设置为复制... ,然后它们出现在.\bin\debug\ConfigFiles\
文件夹中。我希望它们出现在.\bin\debug\
文件夹中。
答案 0 :(得分:77)
您可以使用post build事件执行此操作。在编译时将文件设置为无操作,然后在宏中将文件复制到所需的目录。
这是一个post build Macro,我认为它可以通过将名为Configuration的目录中的所有文件复制到根构建文件夹来实现:
copy $(ProjectDir)Configuration\* $(ProjectDir)$(OutDir)
答案 1 :(得分:46)
你可以在你的csproj上使用MSBuild任务。
编辑csproj文件
<Target Name="AfterBuild">
<Copy SourceFiles="$(OutputPath)yourfiles" DestinationFolder="$(YourVariable)" ContinueOnError="true" />
</Target>
答案 2 :(得分:30)
您还可以将文件或链接放入解决方案资源管理器的根目录,然后设置文件属性:
Build action = Content
和
Copy to Output Directory = Copy if newer
(例如)
对于链接,将文件从Windows资源管理器拖到解决方案资源管理器中,按住shift和控制键。
答案 3 :(得分:1)
您想在项目中使用Post-Build事件。您可以在那里指定输出,并且有常用项目的宏值,如项目路径,项目名称等。
答案 4 :(得分:0)
您可以使用项目的PostBuild事件。构建完成后,您可以运行DOS批处理文件并将所需的文件复制到所需的文件夹。
答案 5 :(得分:0)
我发现这个问题正在搜索“在编译时将文件复制到应用程序文件夹中”。 OP似乎已经排序了,但如果你没有:
在Visual Studio中,右键单击该文件,选择属性,然后将“复制到输出”选项更改为“始终”。见http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx
答案 6 :(得分:0)
从子文件夹复制到子文件夹
if not exist "$(ProjectDir)$(OutDir)subfolder" mkdir "$(ProjectDir)$(OutDir)subfolder"
copy "$(ProjectDir)subfolder\" "$(ProjectDir)$(OutDir)subfolder\"
答案 7 :(得分:0)
我个人更喜欢这种方式。
修改.csproj
以添加
<ItemGroup>
<ContentWithTargetPath Include="ConfigFiles\MyFirstConfigFile.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>%(Filename)%(Extension)</TargetPath>
</ContentWithTargetPath>
</ItemGroup>