• .net编译,将文件拷贝到指定目录


    场景:
    需要引用一个第三方的native dll库,c语言写的。
    通过DllImport属性调用,所以要确保运行目录有该库(假设是a.dll)。

    问题:
    对于可以添加reference的库,vs编译时会自动将其拷贝到输出目录。
    但是原生c库,无法添加引用,所以这样行不通。

    那么使用属性里的"Copy if Newer"呢?
    还是不行,因为我不想把这个库放在根目录,所以建立了一个dll目录,把库放在目录中,但是这样拷贝的时候,会连同目录结构一起拷贝。
    导致程序运行的时候,找不到这个库

    结局方法:
    参考Stackoverflow上的这个解答 ,编辑csproj文件,找到拷贝对应的配置。

      <ItemGroup>
        <None Include="Dlla.dll">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
      </ItemGroup>
    

    修改为

      <ItemGroup>
        <None Include="Dlla.dll">
          <Link>a.dll</Link> <!-- 新增了这一行 -->
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
      </ItemGroup>
    

    即可。

    吐槽时刻:
    对于.net来说,微软的相关文档实在是不怎么友好。
    全或许全,但是就像给初学者一本字典一样。
    入门教程倒是有,但是也像教了识字就丢出来一本高数课本一样。。

  • 相关阅读:
    python3 sorted()函数解析
    MySql 关键字
    python的 a,b=b,a+b 和 a=b b=a+b 的区别
    python3 all() 函数用于检查实参
    Python3 urllib模块
    Python3 shutil模块
    Python3 sys模块
    Python 异常处理和断言
    Python3 os模块
    Pytho3 file open方法
  • 原文地址:https://www.cnblogs.com/mosakashaka/p/12608253.html
Copyright © 2020-2023  润新知