Существует исключение: массивы длиной 0 строк
#include <iostream>
class CompletlyEmpty {
char NO_DATA[0];
};
int main(int argc, const char** argv) {
std::cout << sizeof(CompletlyEmpty) << '\n';
}
[DllImport("Kernel32.dll", CharSet = CharSet.Unicode )]
static extern bool CreateHardLink(
string lpFileName,
string lpExistingFileName,
IntPtr lpSecurityAttributes
);
Использование:
CreateHardLink (newLinkPath, sourcePath, IntPtr.Zero);
BCL не предоставляет такой возможности, поэтому вам придется прибегнуть к p/invoke
[DllImport("Kernel32.dll", CharSet = CharSet.Unicode )]
static extern bool CreateHardLink(
string lpFileName,
string lpExistingFileName,
IntPtr lpSecurityAttributes
);
И использовать ее, например. например
CreateHardLink(@"c:\temp\New Link", @"c:\temp\Original File",IntPtr.Zero);
Если вы имеете в виду NTFS Hardlinks:
Ниже (введение текста на dotnetspark) :
К сожалению, ни жесткие, ни мягкие ссылки не поддерживаются .NET Framework. Поэтому вам придется покопаться в Windows API, чтобы ваше приложение могло использовать эту функцию. Вы можете создать жесткую ссылку с помощью одной строки кода, используя простой вызов функции Win32 CreateHardLink(), которая находится в библиотеке Kernel32.dll. Определение этой функции выглядит следующим образом:
BOOL CreateHardLink(
LPCTSTR lpFileName,
LPCTSTR lpExistingFileName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
Process.Start("mklink /H", String.Format("{0} {1}", link, target));