MSIインストーラーを使用して、インストールサービス時にdllの参照をcsprojファイルにプログラムで追加しようとしています。
<Reference Include="TestProject">
<HintPath>..\..\TestProject.dll</HintPath>
</Reference>
protected override void OnAfterInstall(IDictionary savedState)
ProjectInstaller.csのノード追加のソースコードの行を下に置きます
var refnode = xml.CreateElement("Reference");
var attribute = xml.CreateAttribute("Include", null);
attribute.Value = "TestProject";
refnode.Attributes.Append(attribute);
var hintPath = xml.CreateNode(XmlNodeType.Element, "HintPath", null);
hintPath.InnerText = "..\..\TestProject.dll";
refnode.AppendChild(hintPath);
xml.AppendChild(refnode);
xml.Save(file);
コードの出力
<Reference Include="TestProject" xmlns="">
<HintPath>..\..\TestProject.dll</HintPath>
</Reference>
ただし、ソースコードはxmlns=""
Reference要素にさらに属性を追加します。このコードの何が問題になっていますか?xmlns=""
csprojファイルはカスタム属性を受け取らないため、属性を削除する方法。