Nemerle. Как добавить ресурсы в проект?
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 10.01.07 09:10
Оценка:
Собственно, сабж. Пытаюсь в nproj по аналогии с csproj засунуть EmbeddedResource внутрь элемента ItemGroup. Но msbuild ругается:

Target _CopyNonResxEmbeddedResources:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1535,9): error MSB3023: No destination specified for Copy. Please supply either "DestinationFiles" or "DestinationDirectory".

Проектов на Nemerle с ресурсами не видел, так что не знаю, как это правильно делается. И документации нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>

30.01.07 18:01: Перенесено модератором из 'Декларативное программирование' — IT
Re: Nemerle. Как добавить ресурсы в проект?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.01.07 10:28
Оценка: :)))
Здравствуйте, konsoletyper, Вы писали:

K>Собственно, сабж. Пытаюсь в nproj по аналогии с csproj засунуть EmbeddedResource внутрь элемента ItemGroup.


Пока что сделай такой трюк...

1. Сделай (на всякий пожарный) бэкап-копию проекта.
2. Преименуй проект из *.nproj в *.csproj.
3. Открой его судией как обычный C#-проект.
4. Добавиь ресурсы.
5. Переименуй проект обратно в *.nproj.

Сам не пробовал, но теоритически должно сработать. Это же должно сработать и для многих других настроек.

ЗЫ

А вообще, многие вещи просто еще не доделаны или не оттестированы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Nemerle. Как добавить ресурсы в проект?
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 10.01.07 11:21
Оценка:
Здравствуйте, VladD2, Вы писали:

K>>Собственно, сабж. Пытаюсь в nproj по аналогии с csproj засунуть EmbeddedResource внутрь элемента ItemGroup.


VD>Пока что сделай такой трюк...


VD>1. Сделай (на всякий пожарный) бэкап-копию проекта.

VD>2. Преименуй проект из *.nproj в *.csproj.
VD>3. Открой его судией как обычный C#-проект.
VD>4. Добавиь ресурсы.
VD>5. Переименуй проект обратно в *.nproj.

Не, интеграцию я пока не использую. Писал (не я) .nproj-файл ручками, потом пытались (я и товарищ) его править и так и сяк. Файл был написан при помощи copy-paste из имеющихся .nproj и .csproj. Глюк именно в msbuild. Если никто ничего не знает, то надо бы написать на nemerle.org.

Кстати, интеграция спокойно открыла .csproj и тут же обнаружила файлы, подключённые как embedded resource. Но сбилдить проект не удалось: опять то же сообщение. Тогда я ручками удалил EmbeddedResource, опять открыл проект. Файлы, естественно, не появились. Когда же я их добавил из VS, в элементе ItemGroup опять оказался тот же самый EmbeddedResource, естественно, не сбилдился.

VD>А вообще, многие вещи просто еще не доделаны или не оттестированы.


Да, есть одна мегавещь, из-за которой я не пользуюсь интеграцией. А именно, глючат референсы между проектами. Причём это отражается не только в том, что информация о типах и т.д. не берётся из проектов, на которые есть ссылка, а даже сборка не хочет билдится с соответствующим сообщением.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Nemerle. Как добавить ресурсы в проект?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.01.07 12:00
Оценка:
Можно вопрос Лойду? Спасибо.

А что смешоного в моих словах?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Nemerle. Как добавить ресурсы в проект?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.01.07 12:10
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Не, интеграцию я пока не использую. Писал (не я) .nproj-файл ручками, потом пытались (я и товарищ) его править и так и сяк. Файл был написан при помощи copy-paste из имеющихся .nproj и .csproj. Глюк именно в msbuild. Если никто ничего не знает, то надо бы написать на nemerle.org.


K>Кстати, интеграция спокойно открыла .csproj и тут же обнаружила файлы, подключённые как embedded resource. Но сбилдить проект не удалось: опять то же сообщение. Тогда я ручками удалил EmbeddedResource, опять открыл проект. Файлы, естественно, не появились. Когда же я их добавил из VS, в элементе ItemGroup опять оказался тот же самый EmbeddedResource, естественно, не сбилдился.


Странно. Ну, может действительно что-то в компиляторе.

K>Да, есть одна мегавещь, из-за которой я не пользуюсь интеграцией. А именно, глючат референсы между проектами. Причём это отражается не только в том, что информация о типах и т.д. не берётся из проектов, на которые есть ссылка, а даже сборка не хочет билдится с соответствующим сообщением.


Упрощаенная должна работать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Nemerle. Как добавить ресурсы в проект?
От: Lloyd Россия  
Дата: 10.01.07 12:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Можно вопрос Лойду? Спасибо.


VD>А что смешоного в моих словах?


Да ничего личного. Просто улыбнуло.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Nemerle. Как добавить ресурсы в проект?
От: mаrvin Россия  
Дата: 10.01.07 12:26
Оценка: 10 (1)
Здравствуйте, VladD2, Вы писали:

VD>Странно. Ну, может действительно что-то в компиляторе.


У меня такая вот гипотеза.

Это не глюк, а правильная работа. Target'у
_CopyNonResxEmbeddedResources, из-за которого выпадает ошибка, но вход
нужен атрибут DestinationFiles, который определяется так:

(Microsoft.Common.targets)

DestinationFiles="@(ManifestNonResxWithNoCulture->'$(IntermediateOutputPath)%(Identity)')"



Соответственно, ему нужен определенное свойство
ManifestNonResxWithNoCulture. Которое и является Output'ом для
вот этого:

(Nemerle.MSBuild.targets)
<CreateNemerleManifestResourceName
 Condition="'@(NonResxWithNoCulture)'!=''"
 ResourceFiles="@(NonResxWithNoCulture)"
 RootNamespace="$(RootNamespace)">

 <Output
  TaskParameter="ManifestResourceNames"
  ItemName="ManifestNonResxWithNoCulture"/>

</CreateNemerleManifestResourceName>


Сейчас это закомментировано. Похоже, просто не реализован нужный класс. Так понимаю, который должен быть производным от CreateManifestResourceName из Microsoft.Build.Tasks.

Поправьте, если что не так.
... << RSDN@Home 1.2.0 alpha rev. 667>>
Re[4]: Nemerle. Как добавить ресурсы в проект?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.01.07 12:28
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Да ничего личного. Просто улыбнуло.


Что? Что в альфе не реализована некоторая функциональность?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Nemerle. Как добавить ресурсы в проект?
От: mаrvin Россия  
Дата: 10.01.07 14:47
Оценка:
M>У меня такая вот гипотеза.

Гипотеза подтвердилась.

В своём сообщении, кстати, перепутал термины -- то, что внутри Target это Task.

Самый очевидный и простой workaround -- использовать Task
CreateCSharpManifestResourceName из Microsoft.Build.Tasks:

(Nemerle.MSBuild.targets)

<UsingTask
    TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"
  AssemblyName="Microsoft.Build.Tasks"/>


И затем использовать CreateCSharpManifestResourceName вместо
CreateNemerleManifestResourceName. У меня работает.

Однако есть одно но. У ресурсов получаются имена не
rootNamespace.<resourceFileName>, а obj.Any.<resourceFileName>.

Иожет быть, это можно исправить? Вполне возможно, просто нужно
дописать что-нибудь в конфиге.
... << RSDN@Home 1.2.0 alpha rev. 667>>
Re[6]: Nemerle. Как добавить ресурсы в проект?
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 10.01.07 19:56
Оценка:
Здравствуйте, mаrvin, Вы писали:

M>Гипотеза подтвердилась.


[skip]

M>Однако есть одно но. У ресурсов получаются имена не

M>rootNamespace.<resourceFileName>, а obj.Any.<resourceFileName>.

Это серьёзный недостаток. Ведь если делать Debug-сборку, будет obj.Debug.<resourceFileName>, а если Release — obj.Release. Это напрягает.

Ну нет у меня щас времени рыться в тонкостях msbuild. Проще по старинке юзать shell или nmake, пока немерлисты не залатают дырку. Кстати, кто бы им сообщил о такой недоработке? Лично у меня плохо с тем, чтобы что-то написать по-английски (к моему стыду).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Nemerle. Как добавить ресурсы в проект?
От: mаrvin Россия  
Дата: 11.01.07 02:53
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Это серьёзный недостаток. Ведь если делать Debug-сборку, будет obj.Debug.<resourceFileName>, а если Release — obj.Release. Это напрягает.


Закрою эту тему. Дело действительно в компиляторе.

Префиксы obj.<...> взяты из названий папки, в которую
копируются ресурсы. Дело, получается, не в MSBuild, так как
компиляторы ncc и cs на вход получают одно и то же. Просто cs каким-то
образом убирает ненужные пути obj\...\ из пути к ресурсам. А ncc
этого не умеет.

А неймспейса не было, так как я забыл указать его в проекте.
... << RSDN@Home 1.2.0 alpha rev. 667>>
Re[8]: Nemerle. Как добавить ресурсы в проект?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.01.07 07:03
Оценка:
Здравствуйте, mаrvin, Вы писали:

M>Закрою эту тему. Дело действительно в компиляторе.


M>Префиксы obj.<...> взяты из названий папки, в которую

M>копируются ресурсы. Дело, получается, не в MSBuild, так как
M>компиляторы ncc и cs на вход получают одно и то же. Просто cs каким-то
M>образом убирает ненужные пути obj\...\ из пути к ресурсам. А ncc
M>этого не умеет.

M>А неймспейса не было, так как я забыл указать его в проекте.


Тогда добавьте отчет о баге в багтрекер.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Nemerle. Как добавить ресурсы в проект?
От: _nn_ www.nemerleweb.com
Дата: 09.02.10 18:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, mаrvin, Вы писали:


M>>Закрою эту тему. Дело действительно в компиляторе.


M>>Префиксы obj.<...> взяты из названий папки, в которую

M>>копируются ресурсы. Дело, получается, не в MSBuild, так как
M>>компиляторы ncc и cs на вход получают одно и то же. Просто cs каким-то
M>>образом убирает ненужные пути obj\...\ из пути к ресурсам. А ncc
M>>этого не умеет.

M>>А неймспейса не было, так как я забыл указать его в проекте.


VD>Тогда добавьте отчет о баге в багтрекер.


Эти изменения вошли в SVN уже ?
Я все еще получаю ошибку
Target _CopyNonResxEmbeddedResources:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1535,9): error MSB3023: No destination specified for Copy. Please supply either "DestinationFiles" or "DestinationDirectory".

http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[10]: Nemerle. Как добавить ресурсы в проект?
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.02.10 18:33
Оценка:
Здравствуйте, _nn_, Вы писали:

VD>>Тогда добавьте отчет о баге в багтрекер.


__>Эти изменения вошли в SVN уже ?

__>Я все еще получаю ошибку
__>
__>Target _CopyNonResxEmbeddedResources:
__>    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1535,9): error MSB3023: No destination specified for Copy. Please supply either "DestinationFiles" or "DestinationDirectory".
__>

__>

Мое сообщение было 2007-го года.

Если что-то не работает сейчас, то лучше описать проблему отдельно и полностью.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Nemerle. Как добавить ресурсы в проект?
От: _nn_ www.nemerleweb.com
Дата: 10.02.10 10:10
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Если что-то не работает сейчас, то лучше описать проблему отдельно и полностью.


Хорошо.
Пытаюсь скомпилировать Snippet addin:
C:\Projects\nemerle>c:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe tools\snippetcompiler-addin\snippetcompiler-addin.nproj /p:Configuration=Release


Target CreateManifestResourceNames:
  C:\Program Files\Nemerle\Nemerle.MSBuild.targets(44,13): error MSB4067: The element <_Temporary> beneath element <ItemGroup> is unrecognized.
Done building target "CreateManifestResourceNames" in project "snippetcompiler-addin.nproj" -- FAILED.

Done building project "snippetcompiler-addin.nproj" -- FAILED.

Build FAILED.
C:\Program Files\Nemerle\Nemerle.MSBuild.targets(44,13): error MSB4067: The element <_Temporary> beneath element <ItemGroup> is unrecognized.
    1 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.10


Если закомментировать EmbeddedResource то компилирует.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[12]: Nemerle. Как добавить ресурсы в проект?
От: seregaa Ниоткуда http://blogtani.ru
Дата: 10.02.10 10:18
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Пытаюсь скомпилировать Snippet addin:

__>
__>C:\Projects\nemerle>c:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe tools\snippetcompiler-addin\snippetcompiler-addin.nproj /p:Configuration=Release
__>


Попробуй компилировать с помощью msbuild от фреймворка версии 3.5 Интеграция по моему уже давно поддерживает только 2008-ую студию, поэтому и скрипты сборки расчитаны на инструменты от .net 3.5
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[13]: Nemerle. Как добавить ресурсы в проект?
От: _nn_ www.nemerleweb.com
Дата: 10.02.10 10:23
Оценка:
Здравствуйте, seregaa, Вы писали:

S>Здравствуйте, _nn_, Вы писали:


__>>Пытаюсь скомпилировать Snippet addin:

__>>
__>>C:\Projects\nemerle>c:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe tools\snippetcompiler-addin\snippetcompiler-addin.nproj /p:Configuration=Release
__>>


S>Попробуй компилировать с помощью msbuild от фреймворка версии 3.5 Интеграция по моему уже давно поддерживает только 2008-ую студию, поэтому и скрипты сборки расчитаны на инструменты от .net 3.5


Да тут разницы никакой:
C:\Projects\nemerle>c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe 
tools\snippetcompiler-addin\snippetcompiler-addin.nproj /p:Configuration=Release

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1545,9):
 error MSB3023: No destination specified for Copy. Please supply either "Destin
ationFiles" or "DestinationDirectory".
Done Building Project "C:\Projects\nemerle\tools\snippetcompiler-addin\snippetc
ompiler-addin.nproj" (default targets) -- FAILED.


Build FAILED.

"C:\Projects\nemerle\tools\snippetcompiler-addin\snippetcompiler-addin.nproj" (
default target) (1) ->
(_CopyNonResxEmbeddedResources target) ->
  C:\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1545,9
): error MSB3023: No destination specified for Copy. Please supply either "Dest
inationFiles" or "DestinationDirectory".
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[12]: Nemerle. Как добавить ресурсы в проект?
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.10 11:17
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Хорошо.

__>Пытаюсь скомпилировать Snippet addin:
__>
__>C:\Projects\nemerle>c:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe tools\snippetcompiler-addin\snippetcompiler-addin.nproj /p:Configuration=Release
__>


Винда у тебя 64-битная?

И еще. Я не могу даже попробовать это дело собрать так как нет зависимых сборок.

Где их брать?

И вообще, надо залить их в СВН. А то из-за этой копирастии проекты собрать невозможно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Nemerle. Как добавить ресурсы в проект?
От: _nn_ www.nemerleweb.com
Дата: 10.02.10 11:25
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _nn_, Вы писали:


__>>Хорошо.

__>>Пытаюсь скомпилировать Snippet addin:
__>>
__>>C:\Projects\nemerle>c:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe tools\snippetcompiler-addin\snippetcompiler-addin.nproj /p:Configuration=Release
__>>


VD>Винда у тебя 64-битная?


Нет.
У меня Windows 7 x86.

VD>И еще. Я не могу даже попробовать это дело собрать так как нет зависимых сборок.


VD>Где их брать?

Вы про http://rsdn.ru/forum/prj.nemerle/3570589.1.aspx
Автор: _nn_
Дата: 15.10.09
?


VD>И вообще, надо залить их в СВН. А то из-за этой копирастии проекты собрать невозможно.

У меня нет прав на коммит.
Скачайте SnippetCompiler и залейте в SVN.
Можно заодно и Reflector или Reflector Beta.

Надо толкько проверить как там с лицензией, может нужно качать отдельно, а не класть в SVN..
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.