Получите путь блока C#

git log --graph --decorate --oneline A B master (или эквивалентный инструмент с графическим интерфейсом) можно использовать после каждой команды git для визуализации изменений.

Это начальное состояние хранилища, с B в качестве текущей ветви.

(B) git log --graph --oneline --decorate A B master
* 5a84c72 (A) C6
| * 9a90b7c (HEAD -> B) C9
| * 2968483 C8
| * 187c9c8 C7
|/  
* 769014a C5
* 6b8147c C4
* 9166c60 C3
* 0aaf90b (master) C2
* 8c46dcd C1
* 4d74b57 C0

Вот скрипт для создания хранилища в этом состоянии.

#!/bin/bash

commit () {
    for i in $(seq $1 $2); do
        echo article $i > $i
        git add $i
        git commit -m C$i
    done
}

git init
commit 0 2

git checkout -b A
commit 3 6

git checkout -b B HEAD~
commit 7 9

Первая команда rebase ничего не делает.

(B) git rebase master
Current branch B is up to date.

Проверка master и слияние B просто указывают master на тот же коммит, что и B (т.е. 9a90b7c). Новых коммитов не создано.

(B) git checkout master
Switched to branch 'master'

(master) git merge B
Updating 0aaf90b..9a90b7c
Fast-forward
<... snipped diffstat ...>

(master) git log --graph --oneline --decorate A B master
* 5a84c72 (A) C6
| * 9a90b7c (HEAD -> master, B) C9
| * 2968483 C8
| * 187c9c8 C7
|/  
* 769014a C5
* 6b8147c C4
* 9166c60 C3
* 0aaf90b C2
* 8c46dcd C1
* 4d74b57 C0

Вторая команда rebase копирует коммиты в диапазоне A..B и указывает их на master. Три коммитов в этом диапазоне: 9a90b7c C9, 2968483 C8, and 187c9c8 C7. Копии являются новыми коммитами со своими собственными идентификаторами коммитов; 7c0e241, 40b105d и 5b0bda1. Ветви master и A неизменны.

(B) git rebase --onto master A B
First, rewinding head to replay your work on top of it...
Applying: C7
Applying: C8
Applying: C9

(B) log --graph --oneline --decorate A B master
* 7c0e241 (HEAD -> B) C9
* 40b105d C8
* 5b0bda1 C7
| * 5a84c72 (A) C6
| * 769014a C5
| * 6b8147c C4
| * 9166c60 C3
|/  
* 0aaf90b (master) C2
* 8c46dcd C1
* 4d74b57 C0

Как и прежде, проверка master и слияние B просто указывают master на тот же коммит, что и B (т.е. 7c0e241). Новых коммитов не создано.

Первоначальная цепочка коммитов, на которую указывал B, все еще существует.

git log --graph --oneline --decorate A B master 9a90b7c
* 7c0e241 (HEAD -> master, B) C9
* 40b105d C8
* 5b0bda1 C7
| * 5a84c72 (A) C6
| | * 9a90b7c C9    <- NOTE: This is what B used to be
| | * 2968483 C8
| | * 187c9c8 C7
| |/  
| * 769014a C5
| * 6b8147c C4
| * 9166c60 C3
|/  
* 0aaf90b C2
* 8c46dcd C1
* 4d74b57 C0
12
задан jmpena 27 May 2009 в 17:35
поделиться

4 ответа

Вы можете сделать это, используя:

string file = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath;
21
ответ дан 2 December 2019 в 06:09
поделиться

На самом деле это может быть путь, который использует программа ... IIRC, он начинает поиск вызова метода в GAC перед переходом по умолчанию в рабочий каталог.

1
ответ дан 2 December 2019 в 06:09
поделиться

Местоположение сборки изменяется в зависимости от перенаправления и теневого копирования. Попробуйте вместо этого использовать свойство Codebase.

3
ответ дан 2 December 2019 в 06:09
поделиться

Вы уверены, что указали правильную сборку в своем проекте? Похоже, вы используете некую "стандартную" сборку, поскольку она находится в папке .NET.

0
ответ дан 2 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: