我需要通过 DTE 获取项目程序集的绝对输出路径。我尝试使用这样做这个方法 http://social.msdn.microsoft.com/Forums/en/vsx/thread/03d9d23f-e633-4a27-9b77-9029735cfa8d,我将在其中访问 OutputPath 属性,将其与程序集名称组合,但这会生成相对路径,例如:
..\..\Output\AnyCPU\Debug\MyAssembly.dll
Using Path.GetFullPath
对我来说不好,因为我的项目可能是从另一个位置执行的。
我注意到 $(TargetPath) 宏(在项目属性的“生成事件”选项卡中)包含程序集的完整路径。如何从 DTE 以编程方式访问该值?
实际问题是 - 如何获取项目的绝对输出路径?
我不知道如何以编程方式访问“$(TargetPath)”,我同意这可能是最好的解决方案。
但是,您提到的方法应该仍然可行,因为 OutputPath 属性是相对于项目文件所在的文件夹的。 (如果我错过了一些情况并非如此,请告诉我?)
所以你可以做类似的事情:
private static string GetProjectExecutable(Project startupProject, Configuration config)
{
string projectFolder = Path.GetDirectoryName(startupProject.FileName);
string outputPath = (string)config.Properties.Item("OutputPath").Value;
string assemblyFileName = (string)startupProject.Properties.Item("AssemblyName").Value + ".exe";
return Path.Combine(new[] {
projectFolder,
outputPath,
assemblyFileName
});
}
(此处使用的 Path.Combine 重载仅在 .NET 4.0 中可用,但您始终可以向后移植它)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)