[英]CI Build on TeamCity Fails due to dependency on Microsoft.Bcl
[英]Microsoft.Bcl package using CallerMemberName fails to build within Teamcity
我已經接管了一個針對.net4的項目。
解決方案中的項目之一是使用System.Runtime.CompilerServices.CallerMemberNameAttribute,該系統來自使用Microsoft BCL可移植性包時安裝的System.Runtime.dll。
我已經檢查過,該項目當前正在使用1.1.3版。
當解決方案在本地開發機器上構建時,一切都可以順利進行。
我現在正在嘗試將解決方案內置在teamcity中,但是當TeamCity嘗試編譯解決方案時,出現此錯誤。 錯誤CS0246:找不到類型或名稱空間名稱'CallerMemberName'(是否缺少using指令或程序集引用?)錯誤CS0433:'c:\\ Windows都存在類型'System.Runtime.CompilerServices.CallerMemberNameAttribute' \\ Microsoft.NET \\ Framework \\ v4.0.30319 \\ mscorlib.dll'和'c:\\ apps \\ teamcity \\ buildAgent \\ work \\ bb8aacaa9fabeac8 \\ packages \\ Microsoft.Bcl.1.1.3 \\ lib \\ net40 \\ System.Runtime.dll'
我已閱讀Jon Skeets對此問題的答案: 在可移植庫中使用CallerMemberName屬性,但是我已經在使用BCL庫。
在花了一些時間之后,我發現Jon Skeet回答了另一個問題,該問題已解決。 什么時候必須在C#中使用extern別名關鍵字?
在我的項目中,獲取到Package的鏈接后,對於每個dll,我都必須更改別名的名稱。 即從全球到新全球
然后,在使用CallerMemberName的類中,必須執行以下操作在頁面頂部的using語句上方
extern別名newglobal;
然后在引用CallerMemberName時,輸入代碼為
[newglobal :: System.Runtime.CompilerServices.CallerMemberName]
這使代碼可以在已安裝.net 4.5的teamcity上成功構建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.