LINUX.ORG.RU

CSC: error CS0518: The predefined type `System.Object' is not defined or imported

 , ,


0

1

Скачал исходники с https://github.com/ratzlaff/XCom-tools , попытался собрать xbuild и в monodevelop, получаю ошибки:

CSC: error CS1548: Error during assembly signing. The specified key file `keyFile.snk' does not exist
CSC: error CS0518: The predefined type `System.Object' is not defined or imported
...
и много похожих ошибок CS0518 по поводу `System.чтонибудь'

В файлах *.csproj есть строка

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
, но если собирать командой
xbuild /p:TargetFrameworkVersion="v2.0"
, получаю те же ошибки. — Ответ: перед запуском xbuild нужно было чистить bin/ и obj/ .

Попробовал, как советуют на StackOverflow, заменить версию во всех TargetFrameworkVersion на 4.5. Посыпались ошибки:

Interfaces/Base/IMapDesc.cs(4,7): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
Interfaces/Base/IMapDesc.cs(5,7): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
Interfaces/IXCImageFile.cs(4,7): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
Interfaces/IXCImageFile.cs(5,7): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
Interfaces/IXCImageFile.cs(6,7): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
ConsoleForm.cs(8,7): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
Interfaces/Base/IMapDesc.cs(11,3): error CS0246: The type or namespace name `IAssemblyLoadable' could not be found. Are you missing an assembly reference?
Interfaces/Base/IMapDesc.cs(12,3): error CS0246: The type or namespace name `IOpenSave' could not be found. Are you missing an assembly reference?
Interfaces/IXCImageFile.cs(16,3): error CS0246: The type or namespace name `IAssemblyLoadable' could not be found. Are you missing an assembly reference?
Interfaces/IXCImageFile.cs(16,21): error CS0246: The type or namespace name `IOpenSave' could not be found. Are you missing an assembly reference?
Updator.cs(5,23): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
Interfaces/Base/IMap_Observer.cs(17,3): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
GameInfo.cs(27,38): error CS0246: The type or namespace name `DSShared' could not be found. Are you missing an assembly reference?
— Ответ: это значит, после замены проект собрался успешно, но не нашёл собранную библиотеку DSShared.

DSShared — одна из частей большего проекта. Я попробовал собрать её отдельно, получил:

:  warning : Default tasks file /usr/lib/mono/3.5/Microsoft.Common.tasks not found, ignoring.
Project "/home/tkzv/openxcom/tools/XCom-tools/DSShared/DSShared.sln" (default target(s)):
	Target ValidateSolutionConfiguration:
: error : Error initializing task Message: Not registered task Message.

В итоге удалось всё собрать, установив MonoDevelop, который автоматически обновил формат всех конфигов и прописал везде версию 4.5. (Панель «Solution», кнопка напротив имени проекта, «Options», «Build->General», убедиться, что «Target Framework» = «Mono / .Net 4.5».) И всюду пришлось подключать DSShared руками, хотя она изначально была там прописана. (Там же, кнопка напротив «References», «Edit References...», в All или Projects включить библиотеку.)

Остался вопрос: как можно было то же сделать в командной строке, без установки MonoDevelop?

И заодно вопрос, если заглянут знатоки GIT. Если я создам на Гитхабе проект-форк, как загрузить мои изменения в форк без повторного скачивания всего проекта?

★★★★★

Ага, у DSShared был устаревший формат конфигов, MonoDevelop сконвертировал в более новый и заменил библиотеки на «Mono/.Net 4.5». Следующий вопрос: как заставить остальные проекты увидеть собранную DSShared?

P.S. Это — библиотека.

question4 ★★★★★ ()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от question4

Ага, чтобы собрать корневой проект, надо было войти в КАЖДЫЙ проект, ссылающийся на DSShared, открыть там Edit References и включить чекбокс возле DSShared.

Программа заработала. Остался один вопрос — как сделать то же без GUI?

question4 ★★★★★ ()