【问题标题】:Copy dll files to .exe directory in ClickOnce deployment将 dll 文件复制到 ClickOnce 部署中的 .exe 目录
【发布时间】:2015-05-20 15:00:27
【问题描述】:

我的 .NET 项目依赖于一堆本机 dll 库,这些库应该复制到与 .exe 文件相同的目录中。 DLL 文件被添加到主项目的“ExternalDependencies”文件夹中,并在自定义构建后操作时复制到输出文件夹。

当我使用 ClickOnce 实用程序发布我的应用程序时,所有 dll 都放置在 ExternalDependencies/ 相对路径中,而不是与 exe 位于同一目录中。

我不想把库放到项目的根目录下,但是我必须想办法在安装过程中改变相对路径。 我发现没有办法这样做,除了手动生成清单:https://msdn.microsoft.com/en-us/library/xc3tc5xx.aspx

也许我错过了什么?有没有更简单的方法来做到这一点?

【问题讨论】:

    标签: c# c++ dll deployment clickonce


    【解决方案1】:

    好的,想通了。这篇博文描述了允许做我想做的事情的项目文件的隐藏可能性:http://blogs.msdn.com/b/mwade/archive/2008/06/29/how-to-publish-files-which-are-not-in-the-project.aspx

    基本上,如果您想要一个自定义路径,您应该为要部署的每个文件在项目文件中添加一个项目:

    <ItemGroup>
    <PublishFile Include="ExternalDependencies\DSAPI.dll">
      <Visible>False</Visible>
      <Group>
      </Group>
      <TargetPath>DSAPI.dll</TargetPath>
      <PublishState>Include</PublishState>
      <IncludeHash>True</IncludeHash>
      <FileType>File</FileType>
    </PublishFile>
    

    TargetPath 属性是我正在寻找的。很遗憾,您无法从 VS UI 更改它!

    【讨论】:

    • 我正在尝试做同样的事情。该链接不再起作用 - 您的项目配置中是否有任何其他 ItemGroups 引用了您的 DLL?上面的方法我试过了,但是还是把文件复制到数据目录,而不是.exe所在的目录
    • 好像是 4 年前,抱歉,我不知道 :)
    • 不担心这是一个远射:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    相关资源
    最近更新 更多