使用运行时进行构建和探测后,如何更改.dll创建的默认目录?

时间:2019-06-19 11:00:53

标签: c# xml dll .net-core app-config

构建应用程序后,我想将所有.dlls移动到“ lib”文件夹。默认程序在目录中创建它们:

  

bin \ Debug \ netcoreapp2.2

这是我要放置.dll的目录:

  

bin \ Debug \ netcoreapp2.2 \ lib

我创建了一个脚本,该脚本将我的.dll移动到该文件夹​​中并将其置于后构建事件中。它可以正常工作。

接下来,我将运行时添加到我的app.config文件中,就像在许多关于stackoverflow的教程和文章中看到的那样。

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <probing privatePath="lib"/>
</assemblyBinding>
</runtime>

但是,在构建并启动程序之后,控制台会显示:

  

要执行的应用程序不存在:    app \ bin \ Debug \ netcoreapp2.2 \ myDLL.dll

我想知道我的应用程序出了什么问题?如何更改程序在其中寻找.dll的目录?

1 个答案:

答案 0 :(得分:0)

我猜您需要的是配置中的codebase元素。

documentation中,如果程序集具有强名称,则代码库设置可以位于本地Intranet或Internet上的任何位置。如果程序集是私有程序集,则代码库设置必须是相对于应用程序目录的路径。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="myAssembly"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="neutral" />
            <codeBase version="2.0.0.0"
                      href="http://www.litwareinc.com/myAssembly.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

希望这会有所帮助。