在C#安装项目中删除vdproj文件中检测到的依赖项?

时间:2016-02-29 16:45:37

标签: visual-studio-2010 visual-studio-2012 tfs2010 vdproj

我有一个可视工作室设置项目,我正在我的一个项目中使用它。我向我展示了许多我不希望包含在MSI中的依赖项,因此我将它们排除在外(来自VS UI)。但由于某种原因,当我使用命令行msbuild时,VS2010仍然会查找被排除的依赖项。然后我决定在文本编辑器中打开vdproj文件,然后手动删除所有依赖项。所以现在我的本地msbuild问题已经解决,但是当我使用TFS构建时,它将所有依赖项重新注入到MSI中。

例如:

"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EE52F4998F1347C63BF8AE8E07278827"
        {
        "AssemblyRegister" = "3:1"
        "AssemblyIsInGAC" = "11:FALSE"
        "AssemblyAsmDisplayName" = "8:myproject.Test, Version=3.3.0.0, Culture=neutral, processorArchitecture=MSIL"
            "ScatterAssemblies"
            {
                "_EE52F4998F1347C63BF8AE8E07278827"
                {
                "Name" = "8:Test.testmsi.DLL"
                "Attributes" = "3:512"
                }
            }
        "SourcePath" = "8:test.testmsi.SR.DLL"
        "TargetName" = "8:"
        "Tag" = "8:"
        "Folder" = "8:_289AAB175D4E4DA9B94AC6756E51F3F9"
        "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:TRUE"
        "IsDependency" = "11:TRUE"
        "IsolateTo" = "8:"
        }

基本上我所做的就是删除

文件的所有这些部分
 "Exclude" = "11:TRUE"
 "IsDependency" = "11:TRUE"

我还需要从文件中删除任何其他内容,以便TFS不会在MSI中注入其他内容吗?

谢谢

2 个答案:

答案 0 :(得分:0)

自动依赖检测是你的敌人。

您可以通过仅处理构建计算机上的安装程序项目,通过构建计算机进行检入以及仅在最终发布配置中来最小化影响。然后排除'持有'。至少他们为我做了。

See my whinge about this component here.

答案 1 :(得分:0)

这帮助我解决了我的问题:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/cccfa305-e8c2-4cd2-8503-78e9fc2028cb/setup-build-fails-unable-to-update-the-dependencies-of-the-project?forum=netfxbcl

<块引用>

拆除安装项目(删除所有程序集),然后保存安装项目,然后编辑安装项目文件并删除剩余的程序集。然后从 Visual Studio 中重新添加所有内容。然后,排除检测到的依赖项。必须手动更新指向可执行文件的快捷方式的 ID。安装套件可以再次构建。