我已將一個可移植類庫添加到具有鏈接到所有項目的全局文件的解決方案中。此全局文件包含彙編級別屬性,如版本,文化和Com可見性。我想解決的問題是,ComVisible等一些屬性在PCL的上下文中無效,因此有沒有與#if一起使用以防止構建時包含此屬性的任何符號?編譯可與預處理器指令一起使用的可移植類庫時是否存在任何符號
1
A
回答
1
我加入存根/虛擬屬性類,模仿他們的整箱同行緊湊框架項目克服了這個問題,並且沒有任何預處理器指令。
3
您可以在構建屬性中配置自己的預處理器符號。我不知道默認是否有任何特定的可移植類庫,但是在您的項目的每個配置中指定一個並不難。
// Shared source file
[ComVisible(true)]
public class Foo
{
}
// Dummy class in portable project -- exists only to facilitate compilation of the shared source file
namespace System
{
[AttributeUsage(AttributeTarget.Class)]
public class ComVisibleAttribute : Attribute
{
public ComVisibleAttribue(bool visible)
{
// Dummy implementation
}
}
}
現在共享的源代碼文件將在兩個項目編譯沒有任何修改的代碼:
+0
感謝喬恩,我在尋找一個內置的,但這是有道理的,並節省了時間! – Tedford 2012-04-17 16:20:34
相關問題
- 1. 是否可以在引號中使用編譯器指令?
- 2. 是否有一個可移植的C編譯器的Windows?
- 3. 使用C預處理器指令編譯時間檢查
- 4. 有可用於可移植類庫的任何REST庫嗎?
- 5. 是否有預處理器「AND」指令
- 6. 是否可以使用Roslyn創建一個可移植的類庫?
- 7. 是否有一個用於可移植類庫的內存緩存?
- 8. 是否可以使用在MonoDroid中引用System.Net的可移植類庫?
- 9. 是否可以在node-gyp命令行上指定編譯器標誌(例如,預處理器宏定義)?
- 10. CultureInfo.LCID是否可用於Xamarin可移植類庫?
- 11. 如何區分預處理器和編譯器指令?
- 12. 是否有任何C++庫可以與WMI一起使用?
- 13. 可能在web.config中使用預處理器指令?
- 14. 是否有可能使用Monodevelop構建一個可移植類庫?
- 15. Xcode 4.5:與預處理器指令一起使用時會損壞縮進
- 16. 在指令選擇器中是否可以有冒號符號?
- 17. RIM編譯器支持的預處理器指令
- 18. 是否存在處理預處理器指令並給出實際預處理器輸出的工具?
- 19. 預處理器:在編譯時存儲字符串數組
- 20. fortran中是否有類似C中的預處理器指令?
- 21. 如何通過預處理器指令檢查編程是否在Visual C++中需要預編譯頭文件?
- 22. nuget庫中的預處理器指令
- 23. C#可移植類庫 - 使用圖像
- 24. 預處理指令是否可以在代碼文件之外使用?
- 25. 是否可以在運行時禁用條件編譯符號?
- 26. 是否將預處理器定義編譯到庫中?
- 27. StreamReader和可移植類庫
- 28. 可移植類庫版本
- 29. C#預處理器指令(#if和#endif)不起作用。編譯錯誤
- 30. .NET 4.5可移植類庫:是否可以在運行時確定平臺?
馬特謝謝你在盒子外面思考!這也是一個可行的解決方案。 – Tedford 2012-04-17 16:43:14
@MattDavey對不起,我遲到了,但我不認爲這是一個值得推薦的解決方案(糾正我,如果我錯了)。 'ComVisibleAttribute'在PCL中不可用,但* *在大多數目標中可用。因此,無論何時您想在特定目標(例如.NET應用程序)中使用PCL,您都會遇到名稱衝突。我想你可以使用'TypeForwardedToAttribute'來解決這個問題,但是我自己沒有經驗。 – 2013-12-05 16:56:25