में पाया जा सकता जवाब के आधार पर जो मैं देखता हूं - यह काफी मामूली प्रतीत होता है, लेकिन दुर्भाग्यवश यह इतना आसान नहीं है।
.RC फ़ाइल से शुरू करते हैं - आप जल्दी से इस तरह फ़ाइल लिख सकते हैं: myown.rc:
1 ICON "..\\Folder1\\icon1.ico"
2 ICON "..\\folder2\\icon2.ico"
1 24 "myown.manifest"
लेकिन अगले प्रश्न - जहां मैनिफ़ेस्ट फ़ाइल जो आप अपने आवेदन के लिए की जरूरत है पाने के लिए।
यह वर्तमान में इस्तेमाल किया मैनिफ़ेस्ट फ़ाइल को निकालने के लिए, इस तरह कमांड लाइन का उपयोग कर सकता है:
mt -inputresource:myOwnNetExe.exe;#1 -out:myown.manifest
और फिर आप अपने .net निष्पादन के साथ कि प्रकट कर सकते हैं।
लेकिन यह सब कुछ नहीं है। प्रोजेक्ट से ही आप अपनी .res फ़ाइल के सापेक्ष पथ निर्दिष्ट नहीं कर सकते हैं, आप केवल पूर्ण पथ का उपयोग कर सकते हैं। .csproj को सहेजें, और इसे नोटपैड के साथ मैन्युअल रूप से संपादित करें - पथ को सापेक्ष बनाने के लिए। परियोजना उसके बाद बस ठीक है।
लेकिन svn/git में - आप शायद .res फ़ाइल - केवल स्रोत कोड नहीं डाल पाएंगे। .rc को .res को संकलित करने की आवश्यकता है।
प्रोजेक्ट/प्री-बिल्ड चरण में ऐसा करने के लिए सर्वश्रेष्ठ।
लेकिन निश्चित रूप से आरसीएक्सई लॉन्च नहीं किया जा सकता है, क्योंकि यह सी ++ प्रोजेक्ट है, और हमारे पास सी # प्रोजेक्ट है जो सी ++ प्रोजेक्ट पैथ की परवाह नहीं करता है।
यह इस तरह पूर्व निर्माण कदम का उपयोग कर walkarounded जा सकता है:
cd $(ProjectDir)
call "%VS100COMNTOOLS%\vsvars32.bat" >nul
rc /c 1252 /nologo myown.rc
आप कहाँ दृश्य स्टूडियो जिसके साथ आप संकलित कर रहे हैं (मैं दृश्य स्टूडियो 2010 का उपयोग कर रहा है) के साथ VS100COMNTOOLS बदलने की जरूरत है।
और यह अभी भी सबकुछ नहीं है। रन-टाइम का - - आप तेज़ी से अपने आवेदन के आइकन को बदलना चाहते हैं आप कोड में रुचि हो सकती है इस तरह snipet:
[DllImport("shell32.dll")]
public static extern IntPtr ExtractIcon(IntPtr hInst, string file, int nIconIndex);
[DllImport("user32.dll", SetLastError = true)]
static extern bool DestroyIcon(IntPtr hIcon);
/// <summary>
/// Sets icon from .exe or .dll into form object
/// </summary>
/// <param name="iIconIndex">Icon index to use.</param>
/// <param name="form">Form to assign to given icon</param>
/// <returns>true if ok, false if failed.</returns>
bool SetIcon(object form, int iIconIndex, String dllOrExe = null)
{
if(dllOrExe == null)
dllOrExe = System.Reflection.Assembly.GetExecutingAssembly().Location;
IntPtr hIcon = ExtractIcon(IntPtr.Zero, dllOrExe, iIconIndex);
if(hIcon == IntPtr.Zero)
return false;
Icon icon = (Icon) Icon.FromHandle(hIcon).Clone();
DestroyIcon(hIcon);
form.GetType().GetProperty("Icon").SetValue(form, icon);
return true;
}
कहाँ Form_Load में आप इस तरह कॉल कर सकते हैं:
SetIcon(this, N);
जहां पहले आइकन के लिए एन = 0, एन = 1 - दूसरे के लिए और इसी तरह।
18.5.2016 अद्यतन मेरा दृष्टिकोण ठीक काम करता है - हालांकि - इस असेंबली फ़ाइल गुणों के बाद - संस्करण जानकारी गायब हो जाती है। सामान्य C++ .rc फ़ाइल का उपयोग करके इसे वापस पुनर्स्थापित करना संभव है, लेकिन दुर्भाग्य से मेरे लिए यह असेंबली विशेषताओं को तोड़ देता है - कार्य प्रबंधक आपके exe को "एप्लिकेशन" के रूप में प्रदर्शित करेगा। अगर किसी भी तरह से प्रकट/एप्लिकेशन शीर्षक को बदलना संभव है तो मैंने थोड़ा गहराई से कटाई करने की कोशिश की है - लेकिन बिना किसी परिणाम के। इसके बाद मैं यहां प्रस्तावित InsertIcons.exe समाधान का उपयोग करके समाप्त हो गया हूं।
तो अगर आप फ़ाइल संस्करण जानकारी में रुचि नहीं कर रहे हैं - InsertIcons.exe का उपयोग करें - आप फ़ाइल संस्करण और कार्य प्रबंधक की जरूरत है अपने आवेदन सही ढंग से दिखाना चाहिए आप, मेरे समाधान का उपयोग कर सकते हैं। सी # कोड स्निपेट (SetIcon) यहां किसी भी समाधान में आपके लिए काम करेगा।
समस्या हल है भूल गया। लेकिन मैंने आरसी/res-file बनाने के लिए [ResEdit] (http://www.resedit.net/) का उपयोग किया है। यह पूरी तरह से काम करता है – 0xDEADBEEF
या सिर्फ एक देशी DLL कि आवेदन के साथ इस तरह के संसाधन शामिल होते तैनात है, तो आप कस्टम उपकरण चलाने के लिए या जानकारी वर्ज़निंग खोने के लिए नहीं है। –
यह दृष्टिकोण फ़ाइल संस्करण जानकारी खो देता है, और आप इसे वापस बहाल (जैसे सी ++ संस्करण शैली आर सी फ़ाइल का उपयोग कर) यदि - आप अभी भी कार्य प्रबंधक/आवेदन शीर्षक गलत के साथ समस्या यह करना होगा। (अंत में अपना स्वयं का समाधान देखें और इसे अपडेट करें।) तो InsertIcons.exe का उपयोग करें! आधिकारिक माइक्रोसॉफ्ट उपकरण का उपयोग न करें! :-) – TarmoPikaro