Компиляция командной строки Settings.settings с использованием VBC - PullRequest
0 голосов
/ 07 января 2009

К моему более раннему вопросу, включающему VBC и NAnt с WinForms , я с тех пор придумал лучший способ сформулировать это.

В файле vbproj у вас есть следующее:

<ItemGroup>
  <None Include="My Project\Settings.settings">
    <Generator>SettingsSingleFileGenerator</Generator>
    <CustomToolNamespace>My</CustomToolNamespace>
    <LastGenOutput>Settings.Designer.vb</LastGenOutput>
  </None>
</ItemGroup>
<ItemGroup>
  <Content Include="My Project\Application.myapp">
    <Generator>MyApplicationCodeGenerator</Generator>
    <LastGenOutput>Application.Designer.vb</LastGenOutput>
  </Content>
</ItemGroup>

Когда запускается сборка из Visual Studio (для Debug Verbosity установлено значение Normal), получается одна из следующих строк:

Target CoreCompile:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Vbc.exe ...

Включает в себя все параметры, необходимые для запуска vbc.exe. Однако, взяв эту строку из Visual Studio и запустив ее непосредственно в командной строке, вы получите:

... My Project\Settings.Designer.vb(67) : error BC30002: Type 'My.MySettings' is not defined.
        Friend ReadOnly Property Settings() As Global.My.MySettings
...\My Project\Settings.Designer.vb(69) : error BC30456: 'My' is not a member of '<Default>'.
                Return Global.My.MySettings.Default

Как заставить приведенные выше Генераторы запускаться из командной строки, или есть где-нибудь вызов, который сгенерирует правильные временные файлы, необходимые для vbc.exe для правильного запуска командной строки?

Ответы [ 2 ]

4 голосов
/ 07 января 2009

Проблема с просмотром строки сборки в visual studio заключается в том, что она фактически не вызывает vbc.exe для сборки из visual studio. Все сборки в Visual Studio происходят с компилятором в памяти вместо компилятора командной строки (верно и для C #).

Команда, которая выглядит как vbc.exe ... - это сгенерированная строка, которая фактически не выполняется. Если вы хотите найти правильную строку для построения вашего проекта, запустите следующий код из командной строки Visual Studio.

msbuild / v: diag myproject.vbproj

Это приведет к созданию файла журнала msbuild (он будет довольно длинным, поэтому я предлагаю отправку по трубопроводу в файл). Как только сборка будет завершена, найдите vbc.exe в этом файле. Он будет иметь фактическую командную строку, необходимую для создания вашего проекта.

0 голосов
/ 28 января 2011

Я провел некоторое время, работая над этим сегодня. Я хотел бы знать правильный ответ о том, как заставить компилятор vbc работать должным образом в отношении пространства имен "My", но мне удалось заставить работать мой скрипт NAnt с использованием NAnt contrib (http://nantcontrib.sourceforge.net/).

NAnt contrib позволяет вам создавать с использованием .NET msbuild, что, по крайней мере, позволило мне настроить автоматические сборки, уведомления и т. Д. Это не дает достаточно точного контроля, который я хотел бы, но служит своей цели. *

Ссылка на эту задачу:

http://nantcontrib.sourceforge.net/release/latest/help/tasks/msbuild.html

И соответствующий фрагмент из моего скрипта сборки:

<target name="build" depends="clean">
     <msbuild project="ProjectName.vbproj" />
</target>

Я довольно часто использовал NAnt для приложений CS, но это первое приложение для VB.NET.

...