VS Post Build Event, скопируйте один уровень над папкой с решением?

В настоящее время у меня

  <PropertyGroup>
    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)Shared.Lib\$(TargetFileName)"</PostBuildEvent>
  </PropertyGroup>

Я хочу сделать что-то подобное, но один уровень выше $(SolutionDir)

Ответ 1

Вы можете использовать..\для перемещения по каталогу.

 <PropertyGroup>
    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)..\Shared.Lib\$(TargetFileName)"</PostBuildEvent>
  </PropertyGroup>

Ответ 2

Решение:

copy "$(TargetPath)" "$(SolutionDir)"..\"Shared.Lib\$(TargetFileName)"

Если в кавычках есть ..\, вместо того, чтобы выполнить команду DOS на одном уровне, это займет буквальное значение.

Ответ 3

Это не работает в VS2010.. не разрешается, но становится частью пути

Студия запускает команду что-то вроде этого диска для копирования $:\a\b\bin\debug drive $:\a\b..\c

Ответ 4

В .Net Core отредактируйте файл csproj:

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
  <Exec Command="copy /Y &quot;$(TargetPath)&quot; &quot;$(SolutionDir)&quot;..\&quot;lib\$(TargetFileName)&quot;" />
</Target>

/Y Подавляет запрос на подтверждение перезаписи существующего файла назначения.

Ответ 5

xcopy "$ (TargerDir)." "$ (SolutionDir)..\Installer\Bin \"

Примечание: "../" используется для структуры папок с одним уровнем вверх