При выполнении в лабораторной работе упражнения №1 , а именно при выполнении нижеследующего кода: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Xna.Framework.Graphics;
namespace Application1 { public partial class MainForm : Form { // Объявим поле графического устройства для видимости в методах GraphicsDevice device;
public MainForm() { InitializeComponent();
// Подпишемся на событие Load формы this.Load += new EventHandler(MainForm_Load);
// Попишемся на событие FormClosed формы this.FormClosed += new FormClosedEventHandler(MainForm_FormClosed); }
void MainForm_FormClosed(object sender, FormClosedEventArgs e) { // Удаляем (освобождаем) устройство device.Dispose(); // На всякий случай присваиваем ссылке на устройство значение null device = null; }
void MainForm_Load(object sender, EventArgs e) { // Создаем объект представления для настройки графического устройства PresentationParameters presentParams = new PresentationParameters(); // Настраиваем объект представления через его свойства presentParams.IsFullScreen = false; // Включаем оконный режим presentParams.BackBufferCount = 1; // Включаем задний буфер // для двойной буферизации // Переключение переднего и заднего буферов // должно осуществляться с максимальной эффективностью presentParams.SwapEffect = SwapEffect.Discard; // Устанавливаем размеры заднего буфера по клиентской области окна формы presentParams.BackBufferWidth = this.ClientSize.Width; presentParams.BackBufferHeight = this.ClientSize.Height;
// Создадим графическое устройство с заданными настройками device = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, DeviceType.Hardware, this.Handle, presentParams); }
protected override void OnPaint(PaintEventArgs e) { device.Clear(Microsoft.Xna.Framework.Graphics.Color.CornflowerBlue);
base.OnPaint(e); } } } Выбрасывается исключение: Невозможно загрузить файл или сборку "Microsoft.Xna.Framework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d" или один из зависимых от них компонентов. Не удается найти указанный файл. Делаю все пунктуально. В чем может быть проблема? |
Опубликован: 05.08.2010 | Доступ: свободный | Студентов: 2010 / 47 | Оценка: 4.50 / 4.40 | Длительность: 60:26:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Теги:
Лекция 5:
Работа с файлами и каталогами
Упражнение 5. Работа с классом Path
Статический класс System.IO. Path содержит статические методы и поля, которые выполняют общие задачи манипуляции с путями. Путем называется строка, которая предшествует укороченному имени файла или каталога перед конечным обратным слэшем ' \ ' (разделителем составного имени).
Метод | Описание |
---|---|
GetDirectoryName() | Возвращает имя каталога по полному имени файла |
GetFullPath() | Возвращает полное имя файла по укороченному имени |
GetFileName() | Возвращает укороченное имя файла по полному имени |
GetFileNameWithoutExtension() | Возвращает укороченное имя файла без расширения |
GetExtension() | Возвращает расширение файла с разделителем '.' |
Combine() | Объединяет путь и имя файла, вставляя между ними разделитеь '\' |
GetPathRoot() | Возвращает имя устройства, например, 'C:\' |
GetRandomFileName() | Генерирует имя файла случайным образом базового формата DOS |
GetTempFileName() | Генерирует заготовку полного имени временного файла для размещения в стандартном каталоге, который (каталог), возможно, еще предстоит создать |
GetTempPath() | Генерирует заготовку полного имени каталога для размещения временных файлов, который, возможно, еще предстоит создать |
AltDirectorySeparatorChar, DirectorySeparatorChar, PathSeparator, VolumeSeparatorChar |
Общедоступные статические поля, содержащие образцы разделителей, используемых в системе: '/' '\' ';' ':' |
- Добавьте к решению проект ( Console Application ) с именем App5 и назначьте его стартовым. Для этого выполните через меню оболочки вначале команду File/Add/New Project, а затем сразу команду Project/Set as StartUp Project (пока созданный проект оболочка считает текущим)
- Заполните файл Program.cs следующим кодом
using System; using System.Collections.Generic; using System.Text; using System.IO; using DEBUG = System.Diagnostics.Debug; // Псевдоним класса namespace App5 { class Program { static void Main(string[] args) { String currentDirectory = Directory.GetCurrentDirectory(); // Каталог сборки String message = "Без использования Path\n".ToUpper(); message += "currentDirectory: " + currentDirectory + "\n"; DirectoryInfo directory = new DirectoryInfo(currentDirectory); FileInfo[] files = directory.GetFiles("*.exe"); // Список файлов по шаблону FileInfo file; if (files.Length > 0) file = files[0]; // Берем первый попавшийся для анализа else return; // Нечего анализировать string fullName = file.FullName; string name = file.Name; message += "fullName: " + fullName + "\n"; message += string.Format("name: {0}\n", name); message += string.Format("\nС использованием Path\n").ToUpper(); String path; message += "path = Path.GetDirectoryName(fullName): " + (path = Path.GetDirectoryName(fullName)) + "\n"; message += "Path.GetFullPath(name): " + Path.GetFullPath(name) + "\n"; message += "Path.GetFileName(fullName): " + Path.GetFileName(fullName) + "\n"; message += "Path.GetFileNameWithoutExtension(fullName): " + Path.GetFileNameWithoutExtension(fullName) + "\n"; message += "Path.GetExtension(fullName): " + Path.GetExtension(fullName) + "\n"; message += "Path.Combine(path, name): " + Path.Combine(path, name) + "\n"; message += "Path.GetPathRoot(path): " + Path.GetPathRoot(path) + "\n"; message += "Path.GetPathRoot(fullName): " + Path.GetPathRoot(fullName) + "\n"; message += "Path.GetRandomFileName(): " + Path.GetRandomFileName() + "\n"; message += "Path.GetRandomFileName(): " + Path.GetRandomFileName() + "\n"; message += "Path.GetRandomFileName(): " + Path.GetRandomFileName() + "\n"; message += "Path.GetTempFileName(): " + Path.GetTempFileName() + "\n"; message += "Path.GetTempFileName(): " + Path.GetTempFileName() + "\n"; message += "Path.GetTempPath(): " + Path.GetTempPath() + "\n"; message += "AltDirectorySeparatorChar: '" + Path.AltDirectorySeparatorChar + "'\n"; message += "DirectorySeparatorChar: '" + Path.DirectorySeparatorChar + "'\n"; message += "PathSeparator: '" + Path.PathSeparator + "'\n"; message += "VolumeSeparatorChar: '" + Path.VolumeSeparatorChar + "'\n"; String unsafeFileName = "..\\..\\..\\" + name; // Опасное имя файла String safeFileName = Path.GetFileName(unsafeFileName); message += "\nОпасное имя файла: " + unsafeFileName + "\n"; message += "Безопасное имя файла: " + safeFileName + "\n"; message += "Полное опасное имя: " + Path.Combine(path, unsafeFileName) + Environment.NewLine; message += "Полное опасное имя: " + Path.GetFullPath(Path.Combine(path, unsafeFileName)) + "\n"; message += "Полное безопасное имя: " + Path.Combine(path, safeFileName); // Печать результатов Console.WriteLine(message); // На консоль DEBUG.WriteLine(message); // На панель Output Console.ReadLine(); // Задержка окна } } }
- Запустите проект - результат должен быть примерно таким
БЕЗ ИСПОЛЬЗОВАНИЯ PATH currentDirectory: E:\Tmp\FilesAndDirectory\App5\bin\Debug fullName: E:\Tmp\FilesAndDirectory\App5\bin\Debug\App5.exe name: App5.exe С ИСПОЛЬЗОВАНИЕМ PATH path = Path.GetDirectoryName(fullName): E:\Tmp\FilesAndDirectory\App5\bin\Debug Path.GetFullPath(name): E:\Tmp\FilesAndDirectory\App5\bin\Debug\App5.exe Path.GetFileName(fullName): App5.exe Path.GetFileNameWithoutExtension(fullName): App5 Path.GetExtension(fullName): .exe Path.Combine(path, name): E:\Tmp\FilesAndDirectory\App5\bin\Debug\App5.exe Path.GetPathRoot(path): E:\ Path.GetPathRoot(fullName): E:\ Path.GetRandomFileName(): epviufbp.0k1 Path.GetRandomFileName(): tyzaz4fb.so2 Path.GetRandomFileName(): ucnivb2v.idh Path.GetTempFileName(): C:\Users\CHETKOB\AppData\Local\Temp\tmp15B4.tmp Path.GetTempFileName(): C:\Users\CHETKOB\AppData\Local\Temp\tmp15B5.tmp Path.GetTempPath(): C:\Users\CHETKOB\AppData\Local\Temp\ AltDirectorySeparatorChar: '/' DirectorySeparatorChar: '\' PathSeparator: ';' VolumeSeparatorChar: ':' Опасное имя файла: ..\..\..\App5.exe Безопасное имя файла: App5.exe Полное опасное имя: E:\Tmp\FilesAndDirectory\App5\bin\Debug\..\..\..\App5.exe Полное опасное имя: E:\Tmp\FilesAndDirectory\App5.exe Полное безопасное имя: E:\Tmp\FilesAndDirectory\App5\bin\Debug\App5.exe