使用长文件路径找不到文件
File could not be found using long file Paths
在我处理一些文件之前,我试图从 git 中删除 lfs 跟踪标签,只有在我们公司 jenkins 服务器中使用的一些文件包含超过 260 个字符的文件路径。因此,我试图让 C# 处理长文件路径。我似乎在努力处理下面的代码,我得到 "Could not find file" 但是我 100% 没有文件存在,并且认为我在使用 @"\?\" 方面做了一些不正确的事情。任何建议将不胜感激。
static int removeLFSTracking(string path)
{
int rC = STATUS_OK;
string lfsTracked = ".lfs.tracked";
List<string> files = new List<string>();
getFiles( path, files );
foreach(string file in files)
{
if(file.Contains(lfsTracked))
{
string newFileName = file.Replace(lfsTracked, "");
try
{
System.IO.File.Move( @"\?\" + file, @"\?\" + newFileName );
}
catch(SystemException e)
{
Console.WriteLine( "Failed to remove lfs tracked from file " + file );
Console.WriteLine( e.ToString( ) );
}
}
}
return rC;
}
我的XMLapp.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="Extensions" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
答案是:我使用的是相对路径,这似乎不适用于语法,当我更改为绝对路径时,我的代码运行良好。
我对文件和 newFileName 使用相对路径,这些不能与 \?\ 语法结合使用,一旦我将它们更改为绝对路径,它就可以正常工作。
在我处理一些文件之前,我试图从 git 中删除 lfs 跟踪标签,只有在我们公司 jenkins 服务器中使用的一些文件包含超过 260 个字符的文件路径。因此,我试图让 C# 处理长文件路径。我似乎在努力处理下面的代码,我得到 "Could not find file" 但是我 100% 没有文件存在,并且认为我在使用 @"\?\" 方面做了一些不正确的事情。任何建议将不胜感激。
static int removeLFSTracking(string path)
{
int rC = STATUS_OK;
string lfsTracked = ".lfs.tracked";
List<string> files = new List<string>();
getFiles( path, files );
foreach(string file in files)
{
if(file.Contains(lfsTracked))
{
string newFileName = file.Replace(lfsTracked, "");
try
{
System.IO.File.Move( @"\?\" + file, @"\?\" + newFileName );
}
catch(SystemException e)
{
Console.WriteLine( "Failed to remove lfs tracked from file " + file );
Console.WriteLine( e.ToString( ) );
}
}
}
return rC;
}
我的XMLapp.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="Extensions" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
答案是:我使用的是相对路径,这似乎不适用于语法,当我更改为绝对路径时,我的代码运行良好。
我对文件和 newFileName 使用相对路径,这些不能与 \?\ 语法结合使用,一旦我将它们更改为绝对路径,它就可以正常工作。