【发布时间】:2015-05-10 16:23:13
【问题描述】:
我有一个引用System.Data.SQLite (from nuget) 的C# 类库。这是构建后我的 bin 文件夹的结构:
- MyProject.dll
- System.Data.SQLite.dll
- x86/SQLite.Interop.dll
- x64/SQLite.Interop.dll
System.Data.SQLite 需要SQLite.Interop 才能运行,并且在运行时会找到正确的 dll。但是,当我使用 InstallShield 生成包含项目主要输出的设置时,不会复制 x86 和 x64 文件夹,并且我的应用程序无法运行。
有什么方法可以强制 Visual Studio 在主输出中包含 x86 和 x64 文件夹?
有什么方法可以在 InstallShield 中手动将文件夹包含在 relative 路径中?
我的环境:
- Visual Studio 2012 专业版
- 安装 Shield 2013 限量版(免费)
- System.Data.SQLite 1.0.96
【问题讨论】:
-
这些听起来像是依赖而不是主要输出,但请记住输出组是为了方便而不是控制。如果您想完全控制您的设置,最好静态选择文件。
-
不幸的是,x64 和 x86 文件夹是由 Nuget 包管理的,所以我发现的唯一方法是使用绝对路径。它可以工作,但每个开发人员都必须在自己的计算机上进行配置。如果我可以使用相对路径会很棒,但我没有找到免费版的方法。
-
@Rafael 让您知道。您可以手动将 setup.isl 文件从
c:\yourpath\packages\System.Data.SQLite.Core.1.0.94.0\build\net40\x86\SQLite.Interop.dll更改为<ISProjectFolder>..\packages\System.Data.SQLite.Core.1.0.94.0\build\net40\x86\SQLite.Interop.dll(或者您的 SQLite.Interop 所在的位置) -
我希望你已经尝试了设置(解决方案资源管理器 -> 右键单击项目 -> 属性 -> 构建)目标平台为 64 位或 32 位,而不是任何 CPU 强制 x86 或 x64。
-
还要检查输出路径。更多详情请参考stackoverflow.com/questions/24940659/…
标签: visual-studio-2012 dll installshield system.data.sqlite installshield-le