Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Следы Visual Studio в проекте


Автор: Walker 15.10.2007, 13:44
Доброго времени суток, уважаемые жители Винграда!

Скажите, пожалуйста, остаются ли от Студии в проекте и в продукте какие-нибудь отметки с указанием инструментов разработки? Скажем так - можно ли каким-нибудь анализом продукта установить - был он разработан и собран с использованием Visual Studio Pro или же в Visual Studio Express, например?

Автор: NightmareZ 15.10.2007, 14:24
Имхо, тайна сия велика. Но, ведь никто тебе не мешает разработать программу в Visual Studio, а скомпилировать прогу не из-под неё, а напрямую компилятором из .NET Framework.

Автор: zaver 15.10.2007, 20:32
Цитата

а напрямую компилятором из .NET Framework.

ууууххх такое бодрит smile 

Автор: archeg 15.10.2007, 23:12
Цитата(zaver @  15.10.2007,  20:32 Найти цитируемый пост)
ууууххх такое бодрит   

Впринципе можно довести до автоматизации). csc.exe поддерживает конфиг-файлы для проекту, а для запуска компиляции можно использовать батник. Компиляция сводится к запуску батника каждый раз)

П.С. Не думаю что студия каким-то образом закладывает что-то в екзешник - но впринципе можно проверить. Закомпилить один и тот же проект под студией и компилятром и посмотреть разницу) Сейчас влом, будет свободное время - попробую.

Автор: tol05 15.10.2007, 23:17
Цитата(archeg @  15.10.2007,  23:12 Найти цитируемый пост)
Сейчас влом, будет свободное время - попробую.

сразу попробуй "батник" по именем http://rsdn.ru/article/devtools/msbuild-05.xml  smile 
его и студия вызывает для компиляции, и руками можно... 

Принцип такой примерно: VS2005->MSBuild->csc.exe

Когда-то много времени с ним провел... smile

P.S. Да, по сабжу... Ни разу никаких следов не видел. Версия CLR - еще куда ни шло, но имя и версия инструмента... Нет, не видал.

Автор: Walker 16.10.2007, 13:30
Спасибо всем за участие в обсуждении!  smile 
Вопрос помечаю решённым, потому что действительно, скорее всего 
Цитата

тайна сия велика

и 
Цитата

скомпилировать прогу ... напрямую компилятором из .NET Framework. 

вариант на все случаи жизни.

P.S.Спасибо, tol05 за информацию про MSBuild.exe!

Автор: archeg 17.10.2007, 00:34
tol05, попробовал MSBuild`ом закомпилить проект и сравнил с закомпиленым проектом студии:
Тот что компилился через мсбилд вышел у два раза меньше. Вот статистика с илдасма:
MSBuild:
Код

File size            : 11264
 PE header size       : 512 (496 used)    ( 4.55%)
 PE additional info   : 1031              ( 9.15%)
 Num.of PE sections   : 3
 CLR header size     : 72                 ( 0.64%)
 CLR meta-data size  : 5836               (51.81%)
 CLR additional info : 552                ( 4.90%)
 CLR method headers  : 205                ( 1.82%)
 Managed code         : 1777              (15.78%)
 Data                 : 1536              (13.64%)
 Unaccounted          : -257              (-2.28%)

 Num.of PE sections   : 3
   .text    - 9216
   .rsrc    - 1024
   .reloc   - 512

 CLR meta-data size  : 5836
   Module        -    1 (10 bytes)
   TypeDef       -    9 (126 bytes)     0 interfaces, 0 explicit layout
   TypeRef       -   61 (366 bytes)
   MethodDef     -   33 (462 bytes)     0 abstract, 0 native, 29 bodies
   FieldDef      -   16 (96 bytes)      0 constant
   MemberRef     -   78 (468 bytes)
   ParamDef      -   26 (156 bytes)
   Constant      -    3 (18 bytes)
   CustomAttribute-   21 (126 bytes)
   StandAloneSig -    8 (16 bytes)
   PropertyMap   -    2 (8 bytes)
   Property      -    3 (18 bytes)
   MethodSemantic-    4 (24 bytes)
   TypeSpec      -    2 (4 bytes)
   Assembly      -    1 (22 bytes)
   AssemblyRef   -    4 (80 bytes)
   ManifestResource-    3 (36 bytes)
   NestedClass   -    1 (4 bytes)
   Strings       -  2510 bytes
   Blobs         -   764 bytes
   UserStrings   -   296 bytes
   Guids         -    16 bytes
   Uncategorized -   210 bytes

 CLR additional info : 552
   Resources         - 552

 CLR method headers : 205
   Num.of method bodies  - 29
   Num.of fat headers    - 16
   Num.of tiny headers   - 13

 Managed code : 1777
   Ave method size - 61

VS:
Код

File size            : 24576
 PE header size       : 4096 (496 used)    (16.67%)
 PE additional info   : 1031              ( 4.20%)
 Num.of PE sections   : 3
 CLR header size     : 72                 ( 0.29%)
 CLR meta-data size  : 5872               (23.89%)
 CLR additional info : 552                ( 2.25%)
 CLR method headers  : 205                ( 0.83%)
 Managed code         : 1790              ( 7.28%)
 Data                 : 8192              (33.33%)
 Unaccounted          : 2766              (11.25%)

 Num.of PE sections   : 3
   .text    - 12288
   .rsrc    - 4096
   .reloc   - 4096

 CLR meta-data size  : 5872
   Module        -    1 (10 bytes)
   TypeDef       -    9 (126 bytes)     0 interfaces, 0 explicit layout
   TypeRef       -   62 (372 bytes)
   MethodDef     -   33 (462 bytes)     0 abstract, 0 native, 29 bodies
   FieldDef      -   16 (96 bytes)      0 constant
   MemberRef     -   79 (474 bytes)
   ParamDef      -   26 (156 bytes)
   Constant      -    3 (18 bytes)
   CustomAttribute-   21 (126 bytes)
   StandAloneSig -    8 (16 bytes)
   PropertyMap   -    2 (8 bytes)
   Property      -    3 (18 bytes)
   MethodSemantic-    4 (24 bytes)
   TypeSpec      -    2 (4 bytes)
   Assembly      -    1 (22 bytes)
   AssemblyRef   -    4 (80 bytes)
   ManifestResource-    3 (36 bytes)
   NestedClass   -    1 (4 bytes)
   Strings       -  2535 bytes
   Blobs         -   764 bytes
   UserStrings   -   296 bytes
   Guids         -    16 bytes
   Uncategorized -   209 bytes

 CLR additional info : 552
   Resources         - 552

 CLR method headers : 205
   Num.of method bodies  - 29
   Num.of fat headers    - 16
   Num.of tiny headers   - 13

 Managed code : 1790
   Ave method size - 61


Я что-то не так сделал? Или в самом деле студия пишет чета в хедер? оО

Автор: NikeDeForest 17.10.2007, 07:48
Может скомпилил в режиме дебаг?

Автор: tol05 17.10.2007, 08:51
NikeDeForest, может быть smile

archeg, покажи аргументы запуска MSBuild-а и лог Output студии

Автор: archeg 17.10.2007, 16:23
Цитата(tol05 @  17.10.2007,  08:51 Найти цитируемый пост)
archeg, покажи аргументы запуска MSBuild-а и лог Output студии 

MSBuild:
Код

>msbuild ConsoleExample.csproj
Microsoft (R) Build Engine Version 2.0.50727.312
[Microsoft .NET Framework, Version 2.0.50727.312]
Copyright (C) Microsoft Corporation 2005. All rights reserved.

Build started 17.10.2007 16:46:56.
__________________________________________________
Project "f:\!MSWork\C#\Focus\ConsoleExample\ConsoleExample\ConsoleExample.csproj
" (default targets):

Target PrepareForBuild:
    Creating directory "obj\Debug\".
Target CoreResGen:
    Processing resource file "ConsoleCtrl.resx" into "obj\Debug\ConsoleExample.C
onsoleCtrl.resources".
    Processing resource file "Form1.resx" into "obj\Debug\ConsoleExample.Form1.r
esources".
    Processing resource file "Properties\Resources.resx" into "obj\Debug\Console
Example.Properties.Resources.resources".
Target CoreCompile:
    F:\Windows\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701
,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:F:\Windows\Micr
osoft.NET\Framework\v2.0.50727\System.Data.dll /reference:F:\Windows\Microsoft.N
ET\Framework\v2.0.50727\System.Deployment.dll /reference:F:\Windows\Microsoft.NE
T\Framework\v2.0.50727\System.dll /reference:F:\Windows\Microsoft.NET\Framework\
v2.0.50727\System.Drawing.dll /reference:F:\Windows\Microsoft.NET\Framework\v2.0
.50727\System.Windows.Forms.dll /reference:F:\Windows\Microsoft.NET\Framework\v2
.0.50727\System.Xml.dll /debug+ /debug:full /optimize- /out:obj\Debug\ConsoleExa
mple.exe /resource:obj\Debug\ConsoleExample.ConsoleCtrl.resources /resource:obj\
Debug\ConsoleExample.Form1.resources /resource:obj\Debug\ConsoleExample.Properti
es.Resources.resources /target:winexe ConsoleCtrl.cs ConsoleCtrl.Designer.cs Con
soleSample.cs Form1.cs Form1.Designer.cs Form2.cs Form2.Designer.cs Program.cs P
roperties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.D
esigner.cs
Target CopyFilesToOutputDirectory:
    Copying file from "obj\Debug\ConsoleExample.exe" to "bin\Debug\ConsoleExampl
e.exe".
    ConsoleExample -> f:\!MSWork\C#\Focus\ConsoleExample\ConsoleExample\bin\Debu
g\ConsoleExample.exe
    Copying file from "obj\Debug\ConsoleExample.pdb" to "bin\Debug\ConsoleExampl
e.pdb".

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:01.97

VS 2005:
Код

------ Rebuild All started: Project: ConsoleExample, Configuration: Debug Any CPU ------
F:\Windows\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:F:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:F:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Deployment.dll /reference:F:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:F:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:F:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:F:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /debug+ /debug:full /optimize- /out:obj\Debug\ConsoleExample.exe /resource:obj\Debug\ConsoleExample.ConsoleCtrl.resources /resource:obj\Debug\ConsoleExample.Form1.resources /resource:obj\Debug\ConsoleExample.Properties.Resources.resources /target:winexe ConsoleCtrl.cs ConsoleCtrl.Designer.cs ConsoleSample.cs Form1.cs Form1.Designer.cs Form2.cs Form2.Designer.cs Program.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs

Compile complete -- 0 errors, 0 warnings
ConsoleExample -> f:\!MSWork\C#\Focus\ConsoleExample\ConsoleExample\bin\Debug\ConsoleExample.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Вызов csc символ в символ одинаков)
Размер файлов разный ) И у мсбилда почти у два раза меньше )

Автор: tol05 17.10.2007, 18:03
мда... вопрос интересный, но почему так - я инфы не нашел. 

Но то, что VS вызывает MSBuild - это факт.

Единственное, что я могу предположить, что студия добавляет в сборку (дебаг режиме) информацию своего дебаггера, а MSBuild - нет.

Автор: archeg 17.10.2007, 19:06
Цитата(tol05 @  17.10.2007,  18:03 Найти цитируемый пост)
Единственное, что я могу предположить, что студия добавляет в сборку (дебаг режиме) информацию своего дебаггера, а MSBuild - нет. 

В таком случае эту инфу можно отловить и определить какой студией (или вообще без студии) компилилось приложение.

Кстати заметил что студия все маленькие проекты компилит с одним конечным размером (24 576 кажись). То есть меньше не бывает никогда. А через мсбилд вышло меньше  smile 

Автор: Dino99rus 17.10.2007, 19:57
Можно спросить, а зачем такие хитрости? Просто я пишу не много(учусь) и хочеться знать.

Автор: Walker 18.10.2007, 07:16
Вопрос связан с правовым обеспечением и возник из следующих соображений. Необходимо проверить-был ли некий продукт разработан с использованием свободнораспространяемых, либо приобретённых в установленном законом порядке лицензионных средств разработки. Поведение разработчика ясно - если лицензия есть, то этот факт не скрывается  smile, а если нет, то мол "всё из командной строки компилю smile и о существовании пиратских копий ПО вообще  впервые слышу".smile А вот действительно ли это так - неизвестно. Вот ежели бы можно было установить факт использования студии (не Express) и при отсутствии соотвествующих прав на неё применить санкции. smile  smile 

!!! Огромная просьба - правовой аспект далее не обсуждать, дабы не вдариться во флейм по теме "А есть ли у субъекта вообще права на продажу на ПО, как он их получает и т.д.". Это тема отдельная. Я только рассказал по просьбе предпосылки к текущему вопросу. При желании лучше сосредоточить внимание непосредственно на сабже. То, что у archeg и tol05 вытекло технически, представляет очень интересную информацию к размышлению. Отправил письмо Mr.DUDA с просьбой поставить им по плюсу, как проявившим живой интерес!

Автор: Tauler 18.10.2007, 09:09
помоему что msbuild, что VS используют csc.exe для компиляции. и ИМХО VS - меганавороченый текстовый редактор(утрированно).

Автор: QryStaL 18.10.2007, 09:20
Tauler, VS - комплексный программный продукт, одним из многих компонентов которого является меганавороченый текстовый редактор.  smile 

Автор: Tauler 18.10.2007, 09:27
Так же можно и про Word/Excel сказать smile суть одна - компилит все csc.exe.

Автор: archeg 18.10.2007, 15:41
Цитата(Tauler @  18.10.2007,  09:27 Найти цитируемый пост)
Так же можно и про Word/Excel сказать  суть одна - компилит все csc.exe.

Всегда так думал) Но тогда обьясните мне кто-то почему я получил разные результаты при компиляции мсбилдом и студией?

З.Ы. Попробуйте кто-то то же что проделал я - может все таки где-то ошибка  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)