C#程序中输出目录中的公共文件

时间:2010-02-02 18:02:35

标签: c# .net visual-studio-2008 build

我的VS2008解决方案具有以下设置。

  • PROGRAM1
  • Program2中
  • Common.dll(由Program1和Program2使用和引用)

在调试模式下,我喜欢将输出目录设置为Program Files \ Productname,因为某些代码会因各种原因获取exe路径。

我的问题是Program1在编译时会出现错误,如果Program2启动它就无法复制Common.dll。反之亦然。

这里的烦恼是我甚至不经常对Common.dll进行更改,但是100%的时间它会尝试复制它,而不仅仅是在有更改时。我最终必须关闭所有程序,然后构建然后启动它们。

所以我的问题是,如果Common.dll项目中有更改,我怎么能只让VS2008复制Common.dll?

5 个答案:

答案 0 :(得分:1)

为什么不在Program1和Program2中引用Common.dll而不是复制DLL?这样最新版本始终可用并始终使用应用程序编译?另外,你可以从Program1 / 2调试到Common.dll吗?

答案 1 :(得分:1)

为什么不使用:

,而不是更改输出目录,以便了解可执行文件的位置
System.Reflection.Assembly.GetExecutingAssembly().Location

答案 2 :(得分:1)

我尝试了以下内容,我认为它显示了您正在寻找的行为:

  • 将common.dll项目的输出更改为Program Files \ Productname(即与program1和program2相同
  • program1和program2项目中的
  • :在对common.dll
  • 的引用上将“copy local”设置为false

这样,Visual Studio只会在其源代码发生变化时尝试复制common.dll。

答案 3 :(得分:0)

在Common.DLL Project

中加入类似的内容
copy $(TargetPath) $($ProjectPath)..\..\Program1\
copy $(TargetPath) $($ProjectPath)..\..\Program2\

并从各自的位置引用它们。

理想情况下,您应该将所有三个项目放在一个解决方案中并引用项目而不是dll,构建整个解决方案然后运行它。这将自动完成所有这些:)

答案 4 :(得分:0)

我所做的一切(出于调试原因)是在解决方案级别创建一个“bin”文件夹,并更改项目选项的构建选项卡上的输出路径所有项目到一个公共路径,即“bin \ Debug \”到“solution \ bin \ debug”(解决方案是解决方案路径)。

为每个“配置”执行此操作,例如“solution \ bin \ release”等

让visual studio处理更新文件等。

注意如果您正在使用调试应用程序,那么无论如何都无法复制新文件,它已被锁定等...

PK: - )