如何以编程方式将项目引用添加到wix项目?

时间:2015-06-02 16:03:39

标签: c# visual-studio-2013 wix

我试图在以编程方式创建Wix项目之后添加对它的引用。这是Microsoft.VisualStudio.TemplateWizard.IWizard的实现。我知道如何为EnvDTE.Project执行此操作:

// Add project reference for projectA from projectB.
// Allows projectA to use classes from projectB.
var temp = (VSProject2)projectA.Object;
temp.References.AddProject(projectB);

但我无法弄清楚如何为OAWixProject做到这一点。任何帮助将不胜感激。谢谢!

编辑:我应该提一下,当(VSProject2)projectA.ObjectprojectA时我尝试演员OAWixProject时会出现问题。

2 个答案:

答案 0 :(得分:0)

不确定您如何使用WIX sdk dll编辑wixproj文件,但您总是可以编程编辑wixproj xml。看起来您将ItemGroup元素添加到根Project元素。您需要注入的xml类似于:

<ItemGroup>
    <ProjectReference Include="..\MySolution\CustomAssembly.csproj">
        <Name>CustomAssembly</Name>
        <Project>{233e4372-895b-4c8d-99b0-f8314d907d66}</Project>
        <Private>True</Private>
        <DoNotHarvest>True</DoNotHarvest>
        <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
        <RefTargetDir>INSTALLFOLDER</RefTargetDir>
    </ProjectReference>
</ItemGroup>

项目guid取自引用项目的csproj。

答案 1 :(得分:0)

虽然问题是在前一段时间被问到的,而且这个问题可能对你没有任何意义,但我想出了以下解决方案:

假设您有一个代表WiX项目的>>> pd.melt(df, id_vars=['Deal','Year','Financial_Data'], value_vars=['Quarter_1','Quarter_2','Quarter_3']).drop('variable',axis=1).sort_values('value') Deal Year Financial_Data value 0 1 1991 120 1 3 1 1991 120 2 6 1 1991 120 3 1 2 1992 80 4 4 2 1992 80 5 7 2 1992 80 6 2 3 1993 100 7 5 3 1993 100 8 8 3 1993 100 9 并且您想要添加对另一个EnvDTE.Project的引用,则无需转换或使用EnvDTE.Project类型:< / p>

OAWixProject

因此,使用void AddProjectReference( EnvDTE.Project wixProject, EnvDTE.Project projectToReference) { var references = wixProject.ProjectItems .Cast<EnvDTE.ProjectItem>() .Select(x => x.Object) .OfType<VSLangProj.References>() .FirstOrDefault(); if (references != null) { references.AddProject(projectToReference); } } 的不同之处在于如何检索引用实例(正如您所提到的那样VSProject使用VSProject.References。)