सी कार्यक्रमों के लिए makefiles में, यह कुछ इस तरह देखने के लिए आम बात है फ़ाइल छवि में संकलित है। विंडोज़ पर उपरोक्त काम करता है क्योंकि% date% और% time% चर cmd.exe में ज्ञात हैं, लेकिन इसी तरह की चीज बिल्ली का उपयोग कर यूनिक्स पर काम करेगी।
आप सी # का उपयोग कर वही काम कर सकते हैं। एक बार फिर, यह एक ऐसा तरीका है जब आप मेकफ़ाइल का उपयोग कर रहे हों। आपको एक कक्षा, और एक सार्वजनिक स्थैतिक संपत्ति की आवश्यकता है।
BuildTimestamp.cs:
echo public static class Build { public static string Timestamp = "%DATE% %TIME%";} > BuildTimestamp.cs
और फिर बात आप निर्माण कर रहे हैं, निर्भरता और एक हटाने के लिए:
MyApp.exe: BuildTimestamp.cs MyApp.cs
$(_CSC) /target:exe /debug+ /optimize- /r:System.dll /out:MyApp.exe MyApp.cs BuildTimestamp.cs
-del BuildTimestamp.cs
आप इसे संकलन के बाद BuildTimestamp.cs फ़ाइल को नष्ट करना सुनिश्चित करें; आप इसका पुन: उपयोग नहीं करना चाहते हैं। फिर, अपने ऐप में, बस Build.Timestamp का संदर्भ लें।
एमएसबिल्ड या विजुअल स्टूडियो का उपयोग करके, यह अधिक जटिल है। मुझे हल करने के लिए% date% या% time% नहीं मिला। उन चीजें छद्म पर्यावरण चर हैं, मुझे लगता है कि यही कारण है। तो मैंने AlwaysCreate = true के साथ टच कार्य का उपयोग करके टाइमस्टैम्प प्राप्त करने के लिए अप्रत्यक्ष तरीके का सहारा लिया। यह एक खाली फाइल बनाता है। अगला चरण फ़ाइल के टाइमस्टैम्प का संदर्भ देने, उसी फ़ाइल में स्रोत कोड लिखता है। एक मोड़ - मुझे अर्धविराम से बचना पड़ा।
आपके पूर्व-निर्माण चरण को "BuildTimestamp" लक्ष्य बनाना चाहिए। और उस फ़ाइल को संकलन में शामिल करना सुनिश्चित करें। और पोस्ट-बिल्ड चरण में बाद में इसे हटा दें।
<ItemGroup>
<StampFile Include="BuildTimestamp.cs"/>
</ItemGroup>
<Target Name="BuildTimestamp"
Outputs="@(StampFile)">
<Message Text="Building timestamp..." />
<Touch
AlwaysCreate="true"
Files="@(StampFile)" />
<WriteLinesToFile
File="@(StampFile)"
Lines='public static class Build { public static string Timestamp = "%(StampFile.CreatedTime)" %3B }'
Overwrite="true" />
</Target>
हो सकता है इस संबंधित सवाल आपके लिए एक समाधान है कि: http://stackoverflow.com/questions/878037/msbuild- msbuildcommunitytasks-task-time –
आप [linker timestamp] का उपयोग कर सकते हैं (http://stackoverflow.com/questions/2234969/adding-compilation-date-to-the-code/2235211#2235211) – user423430