Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用生成后事件…VS2010将文件从一个项目复制到另一个项目_C#_Visual Studio 2010 - Fatal编程技术网

C# 使用生成后事件…VS2010将文件从一个项目复制到另一个项目

C# 使用生成后事件…VS2010将文件从一个项目复制到另一个项目,c#,visual-studio-2010,C#,Visual Studio 2010,我有一个包含3个项目的解决方案。我需要将视图从一个项目复制到另一个项目。我可以通过生成后事件复制创建的DLL,如下所示: 因此,我想将project one“/Views/ModuleHome/Index.cshtml”中的文件复制到project 2中的一个文件夹中。 如何通过生成后事件将文件复制到所需的项目?感谢调用批处理文件,该文件将运行Xcopy,以获取从源到目标所需的文件 call "$(SolutionDir)scripts\copyifnewer.bat" 如果要复制整个文件夹

我有一个包含3个项目的解决方案。我需要将视图从一个项目复制到另一个项目。我可以通过生成后事件复制创建的DLL,如下所示:

因此,我想将project one“/Views/ModuleHome/Index.cshtml”中的文件复制到project 2中的一个文件夹中。
如何通过生成后事件将文件复制到所需的项目?感谢

调用
批处理
文件,该文件将运行
Xcopy
,以获取从源到目标所需的文件

call "$(SolutionDir)scripts\copyifnewer.bat"
如果要复制整个文件夹,请执行以下操作:

xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)MEFMVCPOC\Views"

更新:这是工作版本

xcopy "$(ProjectDir)Views\ModuleAHome\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\" /Y /I
下面是一些使用
xcopy
的常用开关:

  • /I-如果复制多个文件,则将其视为目录
  • /Q-不显示正在复制的文件
  • /S-复制子目录,除非为空
  • /E-复制空的子目录
  • /Y-不提示覆盖现有文件
  • /R-覆盖只读文件
请注意源路径和目标路径中的引号,但不在exludelist txt文件的路径中

ExcludedFileList.txt的内容如下:.cs\

我正在使用此命令将文件从解决方案中的一个项目复制到另一个项目,并排除.cs文件

/D Copy only files that are modified in sourcepath
/y Suppresses prompting to confirm you want to overwrite an existing destination file.
/s Copies directories and subdirectories except empty ones.
/r Overwrites read-only files.
xcopy“$(TargetDir)*$(targettext)”“$(SolutionDir)\Scripts\MigrationScripts\Library\”/F/R/Y/I

/F–显示完整的源和目标文件名

/R–这将覆盖只读文件

/Y–取消覆盖现有文件的提示

/I–假定目标是目录(但必须以结尾)


一个小技巧–在target中,您必须以字符\结尾,告诉xcopy目标是目录而不是文件

像前面的回答一样,我也建议
xcopy
。然而,我想用
/exclude
参数来补充Hallgeir Engen的答案。似乎有一个带有参数的bug阻止它处理长路径名或包含空格的路径名,因为引号不起作用。路径名需要采用“DOS”格式,并将“文档”转换为“DOCUME~1”(根据)

因此,如果要使用\exclude参数,有一个解决方法:

请注意,源路径和目标路径可以(并且应该,如果它们包含空格)在引号内,但是排除文件的路径。

我这样使用它

xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 
xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 


/F : Copy source is File   
/Y : Overwrite and don't ask me
请注意此选项的用法。 $(TargetDir)已具有“\” “D:\MyProject\bin\”=$(TargetDir)

可以在命令编辑器中找到宏


如果您想考虑平台(x64、x86等)和配置(调试或发布),应该是这样的:

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 

这个命令对我来说就像一个符咒:

for /r "$(SolutionDir)libraries" %%f in (*.dll, *.exe) do @xcopy "%%f" "$(TargetDir)"
它递归地将每个
dll
exe
文件从
MySolutionPath\libraries
复制到
bin\debug
bin\release


您可以在

中找到更多信息,我将这一行添加到我的后期生成中,并得到此错误“错误1命令“xcopy”C:\Users\tcompton\Downloads\MEFMVCPOC\ModuleA\Views\ModuleAHome\Index.cshtml”“C:\Users\tcompton\Downloads\MEFMVCPOC\Views\ModuleAHome”“退出,代码为2。”这意味着什么?请查看输出窗口:
Ctrl+W+O
。目标位置是否存在
Views\ModuleAHome
文件夹?查看输出窗口中正在执行的确切命令,然后阅读xcopy命令的文档以了解可用的不同开关:
xcopy/?
。文件夹“Views\ModuleAHome”存在,但它不是目标项目的一部分,这意味着您必须单击“show all files”才能在VS中显示。我不这么认为目标文件夹不是目标项目的一部分这一事实对xcopy有任何影响。此命令直接对文件系统进行操作。至于使此文件夹作为目标项目的一部分出现,自动化此任务可能更困难。明白了。。。xcopy“$(ProjectDir)Views\ModuleAHome\Index.cshtml”“$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\”/Y/I…本文对您的输入很有帮助,谢谢。/exclude:在向源路径和目标路径添加引号后起作用。如果没有这些引号,它根本不起作用。@AechoLiu如果文件路径有空格e,则引号总是必需的。g<代码>“My File.txt”@HarshilDoshi项目→ 项目财产→ 构建事件→ PostBuildEvent当平台为任何CPU时,此选项不起作用。您应该改用$(OutDir)。
xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 
xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 


/F : Copy source is File   
/Y : Overwrite and don't ask me
xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 
for /r "$(SolutionDir)libraries" %%f in (*.dll, *.exe) do @xcopy "%%f" "$(TargetDir)"