Нет возможности использовать dotnet для сборки в Visual Studio для Mac. Он использует msbuild. Если вы действительно хотите это сделать, вам нужно обойти встроенную поддержку и использование msbuild, предоставляемые VS Mac.
VS Mac использует msbuild, который поставляется с Mono, потому что он поддерживает больше целевых сред (например, Xamarin.iOS, Xamarin.Android), чем MSBuild .NET Core SDK. Обратите внимание, что VS в Windows использует аналогичный подход, когда для запуска сборок он использует настольный MSBuild и не использует сборку dotnet.
Однако MSBuild от Mono по-прежнему использует различные целевые файлы MSBuild SDK, которые поставляются с .NET Core SDK. Существует средство преобразования MSBuild SDK, поставляемое с Mono, которое позволяет находить и использовать цели .NET Core SDK msbuild.
Также обратите внимание, что MSBuild от Mono включает в себя некоторые части .NET Core SDK, поэтому он может компилировать проекты .NET Standard без использования .NET Core SDK.
Ответ - то, что необходимо сделать фильтрацию сообщения. Один только GetFiles не может сделать этого. Вот пример, который отправит, обрабатывают Ваши результаты. С этим можно использовать шаблон поиска с GetFiles или не - он будет работать так или иначе.
List<string> fileNames = new List<string>();
// populate all filenames here with a Directory.GetFiles or whatever
string srcDir = "from"; // set this
string destDir = "to"; // set this too
// this filters the names in the list to just those that end with ".doc"
foreach (var f in fileNames.All(f => f.ToLower().EndsWith(".doc")))
{
try
{
File.Copy(Path.Combine(srcDir, f), Path.Combine(destDir, f));
}
catch { ... }
}
Не ошибка, извращенное но хорошо зарегистрированное поведение. *.doc соответствует *.docx на основе 8,3 поисков нейтрализации.
Необходимо будет вручную постотфильтровать результаты для окончания в документе.
используйте linq....
string strSomePath = "c:\\SomeFolder";
string strSomePattern = "*.abc";
string[] filez = Directory.GetFiles(strSomePath, strSomePattern);
var filtrd = from f in filez
where f.EndsWith( strSomePattern )
select f;
foreach (string strSomeFileName in filtrd)
{
Console.WriteLine( strSomeFileName );
}
Это не поможет в ближайшей перспективе, но голосующий по сообщению MS Connect для этой проблемы могли изменить вещи в будущем.
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=95415
С тех пор для "*.abc" GetFiles возвратит расширения 3 или больше, что-либо с длиной 3 после "." точного совпадения, и что-либо дольше не.
string[] fileList = Directory.GetFiles(path, "*.abc");
foreach (string file in fileList)
{
FileInfo fInfo = new FileInfo(file);
if (fInfo.Extension.Length == 4) // "." is counted in the length
{
// exact extension match - process the file...
}
}
Не уверенный в производительности вышеупомянутого - в то время как это использует простые сравнения длины, а не обработки строк, новый FileInfo () называют каждый раз вокруг цикла.