2013-08-13 6 views
0

Хорошо, я долгое время занимался этим проектом. Я не могу взять кредит на какой-либо код. Я хотел бы сделать это, чтобы эффективно анализировать PDF-файл и искать ключевое слово (-и) с помощью PowerShell. Я нашел ConvertFrom-PDF Командлет beefycode в: http://www.beefycode.com/post/ConvertFrom-PDF-Cmdlet.aspx Это кажется, что мне нужно, конечно, это также, кажется, требует класса PDFParser отсюда: http://www.codeproject.com/Articles/14170/Extract-Text-from-PDF-in-C-100-NETPowerShell - создание модуля из C#

Я понял, как скомпилировать исходные файлы из этих сайтов и создать .dll и как создать папку в моем местоположении пользовательского модуля для размещения этих .dlls.

Теперь я застреваю при компиляции командлета, содержащего команду Convertfrom-PDF. Я получаю эту ошибку. Add-Type: c: \ Users \ 12345 \ AppData \ Local \ Temp \ u0ofo-9-.0.cs (11): Предупреждение как ошибка: поле «PowerShell.PDF.ConvertFromPDF._PDFFile» никогда не назначается , и всегда будет иметь значение по умолчанию null

Это имеет смысл для Powershell?

[Cmdlet(VerbsData.ConvertFrom, "PDF")] 
public class ConvertFromPDF : Cmdlet 

Не только это, но я сбит с толку, как работать с исходным файлом с расширением .csproj без визуальной студии. Я закончил тем, что просто открыл блокнот и сохранил его с расширением .cs.

Может ли кто-нибудь помочь пролить свет на мои проблемы? Вероятно, мне следовало начать с чего-то меньшего, чтобы начать изучать, как создавать модули.

В принципе, у меня есть 2 класса, каждый из которых необходимо скомпилировать. Затем файл assemblyinfo.cs должен быть скомпилирован. Это исходный файл .csproj, который, кажется, завершает их все в красивый маленький пакет ... и это файл, который я не могу скомпилировать.

спасибо.

ответ

0

. Файлы CSPROJ на самом деле не являются файлами исходного кода. Это файлы проектов Visual Studio C#, которые содержат параметры, определяющие способ создания связанных файлов .CS (source). Одна из этих настроек превратит предупреждения в ошибки. По-видимому, этот параметр включен в файле проекта. Вы можете открыть файл проекта в Visual Studio C# Express (который является бесплатным), или вы можете отредактировать его вручную и отключить этот параметр.

Другой вариант - пропустить файл проекта и просто вручную скомпилировать исходный файл (а не файл assemblyInfo.cs). Если у вас есть .NET SDK установлен откройте командную строку и выполните команду:

csc /t:library /out:foo.dll file.cs 

И если у вас есть несколько CS файлы:

csc /t:library /out:foo.dll *.cs 

Это должно создать сборку File.dll в том же каталоге.

+0

Благодарю вас, я смог скомпилировать основной файл с использованием Powershell ISE. Кажется, что это файл проекта, другой исходный файл (содержащий командлет) и файл assemblyinfo. Когда я пытаюсь скомпилировать этот файл .csproj (который «я превратился в .cs-файл»), я получаю несколько ошибок «Неожиданный символ» и «В пространстве имен нет непосредственных элементов, таких как поля или члены» – yodish

+0

Вы не можете скомпилировать файл CSPROJ с помощью csc.exe. Если вы действительно хотите «создать» файл CSPROJ, сначала отредактируйте параметр, который преобразует предупреждения в ошибки, а затем запустите 'MSBuild.exe foo.csproj'. Кстати, вы не хотите открывать/строить это в Visual Studio по какой-то причине? –

+0

Я действительно загрузил Visual Studio 10 express и могу открыть файл проекта.Все выглядит отлично, но я все еще болтаю о том, как на самом деле реализовать командлет. Файл cmdlet.cs и другой .cs-файл, который содержит класс, необходимый для файла cmdlet.cs; все они содержатся в пространстве имен (который является именем .csproj). Я понимаю, что это «наследование», но я все еще изучаю C# и не могу заставить его работать. Я могу создать DLL-файл из файла .cs, который наследует .cmdlet, но мне не удается успешно создать DLL из .cmdlet.cs – yodish

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