我正在尋找在我的DLL中包含一個函數,該函數給出構建時間或自動構建編號。雖然有大量的C#示例,但我還沒有看到任何F#。如果可能的話,我希望沒有外部包或C#圖層。在F中構建數字#
Q
在F中構建數字#
3
A
回答
2
最後修改
下面將告訴你函數所在的裝配的最後修改時間
let lastModified() =
System.Reflection.Assembly.GetExecutingAssembly().Location
|> System.IO.File.GetLastWriteTime
版本
要獲取版本號,你首先必須將它添加到F#程序中(它不在默認模板中)。將其添加到項目中的F#源文件(例如Assemblyinfo.fs)
module AssemblyInfo
open System.Reflection
[<assembly: AssemblyVersion("1.0.*")>]
()
但是請注意,版本1.0。*在C#(2010)中不起作用,它只會自動遞增次要版本而不是修訂版本。 1.0.0。*增加了修訂版本,但不是次要版本。
然後你可以如下閱讀組裝版本:
let version() =
System.Reflection.Assembly
.GetExecutingAssembly()
.GetName()
.Version
2
在這裏,你去。我移植了代碼here:
module MyModule
type BuildTime =
static member RetrieveLinkerTimestamp() =
let c_PeHeaderOffset = 60
let c_LinkerTimestampOffset = 8
let filePath = System.Reflection.Assembly.GetCallingAssembly().Location
let b : byte array = Array.zeroCreate 2048
use s = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read)
s.Read(b, 0, 2048) |> ignore
let i = System.BitConverter.ToInt32(b, c_PeHeaderOffset)
let secondsSince1970 = System.BitConverter.ToInt32(b, i + c_LinkerTimestampOffset)
let dt = System.DateTime(1970, 1, 1, 0, 0, 0)
let dt1 = dt.AddSeconds(float(secondsSince1970))
dt1.AddHours(float(System.TimeZone.CurrentTimeZone.GetUtcOffset(dt1).Hours))
這不是很漂亮,但它的工作原理。我將它作爲一種類型編寫,以便可以從其他.NET代碼輕鬆訪問它。
相關問題
- 1. F#構造函數
- 2. F#工作流構建Rx之中
- 3. 在Mac上構建F#.fsproj(單聲道)
- 4. 在網絡中構建數據字典
- 5. F中沒有構造函數的類#
- 6. F#中的構造函數xml文檔?
- 7. F#中的重寫構造函數#
- 8. F#中的通用構造函數#
- 9. Xbuild構建面向.NET 3.5的F#3
- 10. TeamCity無法構建F#項目
- 11. 構建三級深F-綁定類型
- 12. 是否有F#事件的構建器?
- 13. 在F#中實現構建器模式(a System.Text.StringBuilder)
- 14. 在F中構建列表時類型不匹配#
- 15. 結構在NXC和F#
- 16. 如何在(功能性)F#中創建遞歸數據結構值?
- 17. F#創建二維數組
- 18. 如何在構造函數被調用之前初始化F#中的字段?
- 19. 我可以將參數傳遞給F#FAKE構建腳本嗎?
- 20. 在R中構建函數
- 21. 在jquery中構建數組
- 22. 從JSON構建大數字
- 23. 局部解構(F#)
- 24. F#發現結構
- 25. 如何在Scala中實現OCaml/F#的「函數」構造?
- 26. 在f中找不到方法或對象構造函數#
- 27. F#報價,陣列和在構造函數中自我標識
- 28. 浮點數字中的「f」後綴
- 29. 在Ruby中將0-F字符串轉換爲字節數組
- 30. F#「構造函數的值...未定義」