【问题标题】:Specifying a non-.NET dependency in Visual Studio在 Visual Studio 中指定非 .NET 依赖项
【发布时间】:2010-09-12 16:24:56
【问题描述】:

我正在使用 P/Invoke 从我的项目中调用非 .NET dll,这意味着 .dll 必须始终存在于 .exe 的目录中。

有没有什么办法可以告诉Visual Studio这个依赖,让它在编译的时候自动将.dll复制到输出目录,并在setup中自动包含.dll?还是我必须手动执行此操作?

【问题讨论】:

    标签: .net visual-studio dll dependencies


    【解决方案1】:

    您可以简单地将 .DLL 添加到您的项目中。

    为该文件选择Properties 窗格并将Build Action 设置为Content 并将Copy to Output Directory 设置为Copy if newer

    【讨论】:

    • Build Action = "Content" 比 Build Action = "None" 在另一个响应中建议的要好。这是因为您可以轻松地在安装项目中包含“内容”文件。
    • 是的,这正是我在回复中建议的原因。
    • > 这正是我在回复中建议的原因以及为什么我赞成你的回答:)
    【解决方案2】:

    您可以将此文件复制/链接到项目,并在属性窗口中将“构建操作”设置为“无”,将“复制到输出目录”设置为“如果较新则复制”或“始终复制”。

    或者您可以使用“预构建事件”和“构建后事件”,您可以在其中指定任何批处理脚本。

    我更喜欢第二种方式,因为这种方式比第一种更灵活。

    您还可以修改 MSBuild 文件并添加复制文件的任务。

    【讨论】:

    • 谢谢,第一个选项是我正在做的 - 想知道是否有更好的方法
    【解决方案3】:

    我认为仅将 .DLL 添加到项目中的一个问题是,您可能需要不同版本的 DLL 来进行调试和发布构建。您可能认为您可以将 DLL 的调试版本和发布版本都添加到文件中,并根据配置排除不合适的版本,但我找不到这样做的方法。我正在使用 Visual Studio 2010。我很肯定这在过去与 VS6 一起工作。

    【讨论】:

    • 您可以手动编辑 .csproj 文件,将 Condition 添加到 DLL 的内容节点: 或者,您可以根据当前配置,使用预构建步骤将 MyDLL.Debug.dll 或 MyDLL.Release.dll 复制到 MyDLL.dll。 (我认为你应该可以通过 VS 中的项目属性页面,通过从调试切换到发布来做到这一点)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2018-09-07
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多