我试图在以编程方式创建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.Object
是projectA
时我尝试演员OAWixProject
时会出现问题。
答案 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
。)