簡體   English   中英

使用CallerMemberName的Microsoft.Bcl程序包無法在Teamcity中生成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM