none
能否将引用的项目生成到子目录中? RRS feed

  • 问题

  • 我有个项目,Server,引用了一个项目,Common。

    生成的目录中就是一个Server.exe, 一个Common.dll

    但是我现在DLL很多觉得有点乱,想把所有的DLL生成到一个子目录中去,不知道要如何设定?

    2010年7月29日 3:21

答案

  • 项目--》属性--》生成--》输出--》输出路径
    2010年7月29日 9:31
  • 如果把 Common.dll 生成到其他文件夹下,则有可能 Server.exe 找不到 Common.dll,在这种情况下,CLR 会按照一定的顺序搜索目录以确定 Common.dll 的位置。只有放到特定的目录下面,才能在 CLR 的默认配置下找到引用。CLR 的文件搜索次序大概为:

    \commom.dll
    \en-US\common.dll
    \common\common.dll
    \PrivateAssemblies\common.dll
    ...

    利用 app.manifest 的 <probe> 节点的 path 属性可以配置 (以逗号分开) 需要搜索的目录相对路径。


    Mark Zhou
    2010年7月29日 9:43
  • 如果dll多不可耐,可以尝试这么干:

    下载ILMerge
    http://www.microsoft.com/downloads/details.aspx?familyid=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en
    安装,默认目录C:\Program Files\Microsoft\ILMerge\

    进入cmd。输入命令行:

    ILmerge /ndebug /target:dll /out:C:\wa2.exe /log C:\WindowsApplication2.exe C:\ClassLibrary1.dll C:\ClassLibrary2.dll

    这样,exe和所有dll就打包成一个wa2.exe了。非常简洁。

    2010年7月29日 15:00

全部回复

  • 项目--》属性--》生成--》输出--》输出路径
    2010年7月29日 9:31
  • 如果把 Common.dll 生成到其他文件夹下,则有可能 Server.exe 找不到 Common.dll,在这种情况下,CLR 会按照一定的顺序搜索目录以确定 Common.dll 的位置。只有放到特定的目录下面,才能在 CLR 的默认配置下找到引用。CLR 的文件搜索次序大概为:

    \commom.dll
    \en-US\common.dll
    \common\common.dll
    \PrivateAssemblies\common.dll
    ...

    利用 app.manifest 的 <probe> 节点的 path 属性可以配置 (以逗号分开) 需要搜索的目录相对路径。


    Mark Zhou
    2010年7月29日 9:43
  • 如果把 Common.dll 生成到其他文件夹下,则有可能 Server.exe 找不到 Common.dll,在这种情况下,CLR 会按照一定的顺序搜索目录以确定 Common.dll 的位置。只有放到特定的目录下面,才能在 CLR 的默认配置下找到引用。CLR 的文件搜索次序大概为:

    \commom.dll
    \en-US\common.dll
    \common\common.dll
    \PrivateAssemblies\common.dll
    ...

    利用 app.manifest 的 <probe> 节点的 path 属性可以配置 (以逗号分开) 需要搜索的目录相对路径。


    Mark Zhou


    谢谢。

    有两个问题,

    1,怎么将引用的Common.dll生成到别的目录下,比如生成为\common\common.dll?

    2,app.manifest的例子能不能给一个?

    2010年7月29日 13:04
  • 如果dll多不可耐,可以尝试这么干:

    下载ILMerge
    http://www.microsoft.com/downloads/details.aspx?familyid=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en
    安装,默认目录C:\Program Files\Microsoft\ILMerge\

    进入cmd。输入命令行:

    ILmerge /ndebug /target:dll /out:C:\wa2.exe /log C:\WindowsApplication2.exe C:\ClassLibrary1.dll C:\ClassLibrary2.dll

    这样,exe和所有dll就打包成一个wa2.exe了。非常简洁。

    2010年7月29日 15:00
  • 你好!

         你添加这个引用的时候,如果在属性窗口中设置了“复制到本地”,那只能复制到输出路径。这个行为改不了。

         你只能手动复制,然后采用配置文件等方式来重定向:

    http://msdn.microsoft.com/zh-cn/library/7wd6ex19%28VS.90%29.aspx


    周雪峰
    2010年8月1日 9:21
    版主