Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 在安装项目中包括文件依赖项 如何确保项目中的文件包含在安装程序创建的应用程序目录中? 或者换句话说:如何在安装项目中包含文件依赖项_Visual Studio 2010_Dll_Dependencies_Windows Installer - Fatal编程技术网

Visual studio 2010 在安装项目中包括文件依赖项 如何确保项目中的文件包含在安装程序创建的应用程序目录中? 或者换句话说:如何在安装项目中包含文件依赖项

Visual studio 2010 在安装项目中包括文件依赖项 如何确保项目中的文件包含在安装程序创建的应用程序目录中? 或者换句话说:如何在安装项目中包含文件依赖项,visual-studio-2010,dll,dependencies,windows-installer,Visual Studio 2010,Dll,Dependencies,Windows Installer,我在我的VB.NET(2010)项目中有一个DLL:TwinCAT.Ads.DLL[has include]它有自己的依赖关系:tcad.DLL[在我的项目中没有include],它不是一个.NET程序集 我让编译器确保它在编译时将TcAds.dll作为现有项添加到我的项目中,然后将其构建操作设置为“嵌入式资源”,并将其设置为始终复制到输出目录,从而将TcAds.dll放入bin output文件夹 现在我已经准备好发布了,我已经做了一个windows安装项目。 请不要建议使用WIX或其他什么,

我在我的VB.NET(2010)项目中有一个DLL:
TwinCAT.Ads.DLL
[has include]它有自己的依赖关系:
tcad.DLL
[在我的项目中没有include],它不是一个.NET程序集

我让编译器确保它在编译时将
TcAds.dll
作为现有项添加到我的项目中,然后将其构建操作设置为“嵌入式资源”,并将其设置为始终复制到输出目录,从而将
TcAds.dll
放入bin output文件夹

现在我已经准备好发布了,我已经做了一个windows安装项目。
请不要建议使用WIX或其他什么,这是我必须处理的问题。

问题是,DLL的这个弃置项不会作为依赖项出现,因此不会包含在安装程序中。安装后,程序运行,找不到DLL,炸弹掉了

  • 我尝试将其作为资源添加到项目中,但没有效果。(项目-属性-资源)
  • 无法将其生成操作设置为编译(出现错误“无法打开模块文件…”)
  • 构建操作“资源”甚至没有包含在bin文件夹中,更不用说安装程序了
  • 将其添加为引用不起作用(它会出现错误“无法添加对…的引用。请确保该文件可访问,并且是有效的程序集或COM组件”。)

当然,必须有一种简单的方法来确保您想要的任何文件都包含在安装目录中

您可以将任意文件添加到安装项目中

< >我创建了一个安装项目并添加了C++ DDL文件来输出。它在安装项目文件中有以下部分。您可以通过这种方式轻松地将dll文件添加到项目中。若需要,可以编写生成后脚本将此文件复制到合适的位置,以便安装项目能够找到它

"File"
        {
            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_06335985DF0F4EF3A600861437AA6CDF"
            {
            "SourcePath" = "8:..\\Debug\\CppWin32.dll"
            "TargetName" = "8:CppWin32.dll"
            "Tag" = "8:"
            "Folder" = "8:_1E4113F2F81040508FD1CDA54F242F25"
            "Condition" = "8:"
            "Transitive" = "11:FALSE"
            "Vital" = "11:TRUE"
            "ReadOnly" = "11:FALSE"
            "Hidden" = "11:FALSE"
            "System" = "11:FALSE"
            "Permanent" = "11:FALSE"
            "SharedLegacy" = "11:FALSE"
            "PackageAs" = "3:1"
            "Register" = "3:1"
            "Exclude" = "11:FALSE"
            "IsDependency" = "11:FALSE"
            "IsolateTo" = "8:"
            }
        }
查看我的构建输出

------ Build started: Project: ConsoleApplication1, Configuration: Debug x86 ------
  ConsoleApplication1 -> P:\denemeler\setupDeneme\Setup1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe
------ Starting pre-build validation for project 'Setup1' ------ 
------ Pre-build validation for project 'Setup1' completed ------
------ Build started: Project: Setup1, Configuration: Debug ------
Building file 'P:\denemeler\setupDeneme\Setup1\Setup1\Debug\Setup1.msi'...
Packaging file 'CppWin32.dll'...
Packaging file 'ConsoleApplication1.exe'...
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========

我现在无法检查,但您应该能够添加“文件”,这些文件应该复制到输出文件夹中。嗯,这不是一个.NET程序集吗?我想知道为什么它不能被添加…我最近重新访问了有问题的项目,我们最终得到了高级安装程序。所以我放弃了。如果有人能解释为什么不可能的话,我也会考虑赏金要求(如果确实是这样的话)。也许某个地方有一个规范的参考。