通过DTE获取项目TargetPath的宏值

2023-12-21

我需要通过 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(使用前将#替换为@)

通过DTE获取项目TargetPath的宏值 的相关文章

随机推荐