2015-05-15 4 views
2

У меня есть проект, который использует следующую строку кода, чтобы дать пользователям возможность выбора местоположения файлов и т.д.Microsoft.Win32 не может быть найден

Win32.SaveFileDialog dialog = new Win32.SaveFileDialog(); 

Используя это, однако, я получаю следующее сообщение об ошибке:

the type or namespace name 'Win32' could not be found (are you missing a using directive or an assembly reference?) 

Я использую следующий "с помощью директивы" в верхней части файла:

using System; 
using Microsoft.Win32; 

I верьте, что это все, что требуется (фактически, using Microsoft.Win32, вероятно, даже не требуется).

У меня есть следующий проект/сборки ссылок (?):

  • Microsoft.CSharp
  • Microsoft.Kinect
  • PresentationCore
  • PresentationFramework
  • Система
  • системы. Core
  • System.Data
  • System.Data.DataSetExtensions
  • System.Xaml
  • System.Xml
  • System.Xml.Linq
  • WindowsBase

Я знаю, что есть миллион вопросов вокруг с такого рода проблемами но не из них, казалось, помогли мне. Я попытался восстановить решение, очистив его, закрыв и открыв VS (2013). К сожалению, я не очень хорошо знаком с VS или C#, но я бы хотел подумать, что я попробовал большинство разумных решений там.

+0

Поскольку вы используете Microsoft.Win32 и пытаетесь напрямую использовать Win32, я считаю, что вам также необходимо добавить Microsoft; чтобы иметь доступ непосредственно к Win32. – deathismyfriend

+0

@deathismyfriend ваше предложение действительно не работает, но поскольку вы упомянули «используя его напрямую», это привело меня к использованию «Microsoft.Win32.SaveFileDialog». Для меня это не имеет значения, если я использую 'Win32' или' Microsoft.Win32', поэтому спасибо! :) Не знаю, почему я не думал об этом раньше ... Тем не менее странно, что он не хочет просто использовать 'Win32'. – Bono

+0

не проблема, это исправить это для вас тогда? Некоторые из них не работают, потому что имя заканчивается конфликтующим, я считаю. Раньше у меня была такая же проблема с формами окон и с чем-то еще, и эта ошибка появилась. – deathismyfriend

ответ

2

С вашей помощью Microsoft.Win32 и пытается использовать Win32 непосредственно, я полагаю, вам также необходимо добавить следующую директиву, чтобы иметь доступ непосредственно к Win32:

using Microsoft; 

Вы вместо этого нужно эту директиву.

using Microsoft.Win32.SaveFileDialog; 

Или можно использовать следующую строку кода для одной и той же функциональности:

Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog(); 
+0

Спасибо, я выбрал 'Microsoft.Win32.SaveFileDialog dialog = new Microsoft.Win32.SaveFileDialog();'. Для меня это не имеет большого значения, если я использую его прямо определенным образом или нет;) – Bono

4

Удалить и добавить еще PresentationFramework.dll ссылку в вашем проекте.

Namespace: Microsoft.Win32
Assembly: PresentationFramework (in PresentationFramework.dll)

MSDN link to SaveFileDialog Class

Represents a common dialog that allows the user to specify a filename to save a file as. SaveFileDialog cannot be used by an application that is executing under partial trust.

+0

Кажется, не работает. – Bono

0

Использование пространства имен System.Windows.Forms использовать функциональные возможности SaveFileDialog.

+1

Существует несколько SaveFileDialog. Боно пытается использовать тот, который указан в директиве Microsoft, а не тот, который находится в окнах. – deathismyfriend

0

Я была такая же проблема со старым кодом, я был вновь редактирования в VS2015.

Я только что удалил Microsoft.Win32 и оставил только SaveFileDialog (в обеих строках: директива и создание объекта), и это сработало для меня.

Смежные вопросы