我正在使用一些C#自定义控件(窗体,按钮等),它们使用皮肤系统,并且依赖于项目文件夹中的外部图像(在zip文件中)。现在,表单设计人员无法显示控件,因为我无法获得正确的zip文件路径。我需要的是一种在设计时获得组件或解决方案的途径。C#设计时间路径
我使用了两个项目:
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'那样的。改用cast。 –
对不起,但它不是我的代码。我一直在复制和粘贴来自很多不同问题的代码,尝试不同的解决方案。 – Snip3r
然后将'Black.zip'复制到'C:/ Program Files(x86)/ Microsoft Visual Studio 10.0/Common7/IDE/Skins /':) –