簡體   English   中英

C#預處理器在本地工作,但在部署時不工作

[英]C# Preprocessor working locally but not when deployed

有一個簡單的問題。

我創建了一個新的構建配置,並添加了一個稱為“ TEST”的預處理程序指令/符號來測試某些內容。

我正在使用網絡表單。 當我在.cs中執行此操作時

var isTestSet = false

#if TEST
        isTestSet = true;
#else
        isTestSet = false;

然后在我的ascx本身的標記中,做一個快速測試:

<% if (isTestSet == true) 
     alert("test is set");
   else
     alert("test is not set");
%>

在我的本地開發環境中,這非常有效。 如果我在TEST中構建解決方案,它會警告它已設置。 當我以調試模式或發布模式之類的方式構建它時,它會警告未設置。 但是,當我使用與我編譯的相同的dll並將其部署到另一個環境時,它總是出現為false(似乎從未起作用)。

有什么想法嗎? 預處理程序指令是否從生成它們的DLL中繼承下來? 意思是只要我的dll是使用添加符號的新配置構建的,那么就應該對其進行設置,不是嗎? 要進行此工作,是否還需要攜帶其他物品? 我以為那只是DLL。

謝謝!

您很可能使用了錯誤的DLL副本。

條件語句在編譯時評估,並且IL不包括“ if-def”輸出的分支。 您可以使用任何反編譯器(即ILSpy甚至ILDasm)(如果您只能使用.Net / VS附帶的工具)來驗證已編譯DLL中實際包含的內容。

請注意,如果您使用條件屬性,而不是已存在於已編譯代碼中的條件屬性 ,並且使用它們注釋的調用方法將根據引用您的DLL的項目進行編譯(例如,請參見Debug.Trace的標記方式)。 有關更多信息,請參見#if DEBUG與Conditional(“ DEBUG”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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