可能重复:
复制到输出目录复制文件夹结构,但只想复制文件
我正在使用VS2010.我有一个使用一些本机DLL的C#项目.在我的源代码树中,我将这些本机文件存储在主解决方案目录下的"DLLs"目录中.在我的C#项目中,我在其中列出了每个DLL的"DLLs"文件夹.每个DLL设置为构建操作"内容"和"复制到输出"设置为"始终".
不幸的是,因为这些文件位于子目录中,VS似乎认为应该以这种方式部署它们.它们被部署到\ bin\Debug\DLLs,而不是部署到\ bin\Debug.有没有直接的方法来说服VS将它们直接部署到\ bin\Debug,还是我必须做某种自定义构建操作来将它们复制到位?
我有一个自定义的msbuild任务,它生成一些输出文件到ProjectA的输出目录($(TargetDir)).当前代码是这样的:
<MyCustomTask ...>
<Output TaskParameter="OutputFiles" ItemName="FileWrites"/>
</MyCustomTask>
Run Code Online (Sandbox Code Playgroud)
ProjectB正在引用ProjectA,但问题是在构建ProjectB时,MyCustomTask生成的文件不会复制到ProjectB的输出目录中.
我们如何使用MSBuild将动态生成的附加文件作为项目依赖项的一部分进行复制?
编辑:这是一个用C#编写的VS2008应用程序.
所以我的解决方案中有一个名为的文件夹
_lib/
Run Code Online (Sandbox Code Playgroud)
这是我保存我的DLL的地方,以便当我引用它们时,它们会内置到bin/文件夹中.
现在我的解决方案中有一个新项目.它是一个DLL,但不应该是引用(它是第三方应用程序所必需的).因此,在构建时,我希望将其复制_lib/到bin/项目中但未在项目中引用.
我已经_lib/在我的应用程序中包含了该文件夹,并且我选择的DLL的属性总是复制.这个ALMOST工作,它用文件夹复制文件,所以我的结构如下:
/bin/_lib/thedll.dll
Run Code Online (Sandbox Code Playgroud)
代替
/bin/thedll.dll
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如果项目有这些目录
MyProject
- bin
- Debug
- program.exe
- Release
- program.exe
- program.cs
Run Code Online (Sandbox Code Playgroud)
在哪里放置data.csv将由程序解析的文件?我想将它放在与程序相同的文件夹中。我必须将其复制到调试和发布目录吗?或者,还有更好的方法?
编辑
我还需要将整个目录复制到输出目录,但 Visual Studio 没有此选项。我在这里找到了答案。如果目录很大(就像我的情况一样),可以使用/Dxcopy 属性仅复制较新的文件来解决。就我而言,我将此命令添加到构建后事件(项目->属性)并且效果很好:
xcopy "$(ProjectDir)\FolderToCopy" "$(TargetDir)\FolderToCopy" /D /E /I /Q /Y
Run Code Online (Sandbox Code Playgroud)
(xcopy 语法)