使用工作目录的相对路径并在C#项目中启动

朱利安

在C#项目中,我尝试将相对路径用于“启动外部程序”和“工作目录”。

在此处输入图片说明

我尝试了../$(SolutionDir)/开头的相对路径和以/开头的相对路径$(ProjectDir)

通过所有尝试,我都会看到一个错误弹出窗口。(找不到外部程序/您输入的工作目录不存在)-请参见屏幕截图。

在此处输入图片说明

是否可以使用相对路径?如何使用?我也在msdn上搜索,但几乎没有有关csproj.user文件的信息。

我们需要这样做,因为我们不希望为所有开发人员强制使用文件夹结构。

这样存储在csproj.user文件(myproject.csproj.user)中:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProjectView>ProjectFiles</ProjectView>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <StartAction>Program</StartAction>
    <StartWorkingDirectory>%24%28SolutionDir%29\..\..\..\..\mydir</StartWorkingDirectory>
    <StartProgram>%24%28SolutionDir%29\..\..\dir\myapplication.exe</StartProgram>
  </PropertyGroup>
</Project>
朱利安

我测试了所有想法。不幸的是,这些答案都没有起作用或没有足够的细节,因此我添加了自己的答案。

  • $(ProjectDir),$(MSBuildProjectDirectory)和$(SolutionDir)将不起作用。不在csproj中,也不在csproj.user中。也不能转义,引号等。这在运行时从错误弹出窗口中显而易见:

在此处输入图片说明

  • 相对路径确实有效,但是StartProgramStartWorkingDirectory具有不同的初始目录!

  • StartProgram在解决方案文件(.sln)所在的目录中启动

  • StartWorkingDirectory在项目的bin目录中启动。

所以我现在为我工作:

  • 启动程序: ..\mydir\myapplication.exe
  • 启动工作目录:(..\..\..\..\..\mydir与相同的目录myapplication.exe

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章