Когда внедренный ресурс назван с таким шаблоном:
любой. {Ххх} .whatever
Замените {xxx} одним из следующих примеров: agq, arn, asa, ast, bas, bem, bez, bin. Assembly.GetManifestResourceNames не найдет их. Их около ста. (Проверьте код ниже, чтобы найти их все)
Я продолжаю получать одни и те же результаты, будь то с .Net framework или .Net core.
Является ли этот тип именования неавторизованным, потому что это похоже на какое-то запрещенное расширение имени файла? Если да, то как отключить это тупое правило безопасности.
List<string> codes = new List<string>();
for (char first = 'a'; first <= (int)'z'; first++)
for (char second = 'a'; second <= (int)'z'; second++)
for (char third = 'a'; third <= (int)'z'; third++)
codes.Add(first.ToString() + second + third);
codes = codes.Take(1000).ToList();
string slnPath = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName;
while (!Directory.GetFiles(slnPath).Any(x => x.EndsWith(".sln")))
slnPath = Directory.GetParent(slnPath).FullName;
string classLibraryFolder = "ClassLibrary1";
var csjFolder = Path.Combine(slnPath, classLibraryFolder);
var csjPath = Path.Combine(csjFolder, $"{classLibraryFolder}.csproj");
string resourcesFolder = "Resources";
string resourcesPath = Path.Combine(csjFolder, resourcesFolder);
XDocument doc = XDocument.Load(csjPath);
if(!doc.Descendants().Attributes().Any(x=> x.Value == $"{resourcesFolder}\\x.aaa.x"))
{
Console.WriteLine("Creating embedded resources...");
Directory.CreateDirectory(resourcesPath);
foreach (var code in codes)
File.Create(Path.Combine(resourcesPath, "x." + code + ".x")).Close();
Console.WriteLine("Updating csproj...");
var xNone = new XElement("ItemGroup");
foreach (var code in codes)
xNone.Add(new XElement("None", new XAttribute("Remove", $"{resourcesFolder}\\x.{code}.x")));
var xEmbeddedResource = new XElement("ItemGroup");
foreach (var code in codes)
xEmbeddedResource.Add(new XElement("EmbeddedResource", new XAttribute("Include", $"{resourcesFolder}\\x.{code}.x")));
doc.Root.Add(xNone);
doc.Root.Add(xEmbeddedResource);
doc.Save(csjPath);
Console.WriteLine("Please relaunch program.");
return;
}
string[] Languages2 = typeof(ClassLibrary1.Class1).GetTypeInfo().Assembly.GetManifestResourceNames().ToArray();
var present = codes.Where(code => Languages2.Any(x => x.EndsWith($"x.{code}.x"))).ToList();
var missing = codes.Except(present).ToList();