近期打包一個項目,項目中加入了ADR的浏覽功能,不是使用ADR控件的方法(因為我的vs 2010 一拖拉ADR 控件就老停止工作。。。),主要代碼如下(前人做的,我隻是負責打包,不過不難看懂):
<span style="white-space:pre"> </span>public dwf()
{
InitializeComponent();
axCExpressViewerControl = new AxCExpressViewerControl();
axCExpressViewerControl.Parent = panel2;
axCExpressViewerControl.Dock = DockStyle.Fill;
}
private void dwf_Load(object sender, EventArgs e)
{
LoadModel();
}
Dictionary<string, string> files;
private void LoadModel()
{
files = new Dictionary<string, string>();
startpath = Application.StartupPath;
DirectoryInfo Dir = new DirectoryInfo(startpath + @"\Visualization\CAD");
treeView1.Nodes.Add("地質剖面圖", "地質剖面圖");
foreach (FileInfo f in Dir.GetFiles()) //查找檔案
{
string filename = f.ToString();
int index = filename.IndexOf(".");
string file = filename.Substring(0,index); ;
string extension = filename.Substring(filename.IndexOf('.') + 1, 3);
if (extension != "dwf" && extension != "DWF")
continue;
files.Add(file, Dir + @"\" + f.ToString());
treeView1.Nodes["地質剖面圖"].Nodes.Add(file, file);
treeView1.ExpandAll();
}
if (files.Count>0)
{
axCExpressViewerControl.SourcePath = files.Values.ToList()[0];
}
}
(注意:用到ADR之前肯定是要安裝ADR的。。)
在打包完成後,安裝時,經常會出現如圖所示的錯誤:
怎麼辦?
解決辦法:
很簡單,在監測到的依賴項裡,把ADR相關的dll的屬性裡面的“register”,都設定為“vsdraDoNotRegister”,這樣這些依賴項就不會注冊了,在程式使用時,就會自動尋找ADR安裝目錄内的相應dll。
最後,推薦一篇文章:c# winform實作dll加載時注冊