我正在使用一些C#自定义控件(如表单、按钮等),它们使用皮肤系统,并且依赖于项目文件夹中的外部图像(在一个zip文件中)。现在,表单设计器无法显示控件,因为我无法获取到正确的zip文件路径。我需要一种在设计时获取程序集或解决方案路径的方法。
我正在使用两个项目:
DLL - 包含自定义控件。
主机应用程序 - 引用DLL并使用自定义控件。
在我的DLL自定义控件类中,在运行时,我只是简单地使用:
这段文字的翻译是:“程序可以完美运行,但设计时表单设计器会显示错误:
”。
表单设计器显示错误:
表单设计器显示错误:
我正在使用两个项目:
DLL - 包含自定义控件。
主机应用程序 - 引用DLL并使用自定义控件。
在我的DLL自定义控件类中,在运行时,我只是简单地使用:
string skinPath = "./Skins/" + skin + ".zip";
这段文字的翻译是:“程序可以完美运行,但设计时表单设计器会显示错误:
”。
Could not find a part of the path 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Skins\Black.zip'.
在浏览了该网站上类似的问题后,我也尝试了以下方法:
1)
if (designMode)
{
EnvDTE.DTE dte = GetService(typeof(EnvDTE.DTE)) as EnvDTE.DTE;
string path = Path.GetDirectoryName(dte.Solution.FullName);
}
表单设计器显示错误:
Object reference not set to an instance of an object.
2)
if (designMode)
{
ITypeResolutionService typeResService = GetService(typeof(ITypeResolutionService)) as ITypeResolutionService;
string path = typeResService.GetPathOfAssembly(Assembly.GetExecutingAssembly().GetName());
}
表单设计器显示错误:
Object reference not set to an instance of an object.
3) 使用Assembly类的各种不同路径。
迄今为止还没有成功。 我正在使用Visual C# 2010 Express。
as
,而应该使用强制转换。 - Mark ByersBlack.zip
复制到C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/Skins/
:) - L.B