/ / .Net Core - c #, asp.net-core, प्रीप्रोसेसर में प्रति प्रीप्रोसेसर निर्देश

प्रीप्रोसेसर निर्देश। नेट कोर - सी #, एएसपीनेट-कोर, प्रीप्रोसेसर में लॉन्च सेटिंग्स प्रति निर्देश

मेरे पास .net core 1 है।1 वेब ऐप जो मैं अपनी टीम के साथ काम कर रहा हूं। कुछ मामलों में, हमें IIS एक्सप्रेस का उपयोग करके ऐप को डीबग करना होगा और अन्य मामलों में हमें इसके बजाय WebListener का उपयोग करने की आवश्यकता है। चूंकि WebListner कमांड एप्लिकेशन को दुर्घटना का कारण बना देगा यदि इसे IIS एक्सप्रेस के तहत चलाया जाता है, तो मैं इसे ऐप को IIS एक्सप्रेस के तहत चलाने पर इसे अक्षम करने के लिए प्रीप्रोसेसर निर्देशों का उपयोग करना चाहूंगा। कोड कुछ इस तरह दिखेगा:

   #if !RUNNING_UNDER_IIS_EXPRESS
.UseWebListener(options =>
{
options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM;
options.ListenerSettings.Authentication.AllowAnonymous = false;
})
#endif

क्या कोई मुझे बता सकता है कि मैं इसे कैसे सेट कर सकता हूं या पूरी बात करने का एक बेहतर तरीका सुझा सकता हूं?

उत्तर:

जवाब के लिए 2 № 1

आपके प्रश्न के साथ समस्या यह है कि एक प्रीप्रोसेसर निर्देश का उपयोग किया जाता है और संकलन समय पर किया जाता है, समय नहीं चलाया जाता है। इसलिए यदि आप "आसान" स्विच चाहते हैं, तो आपको इसे अपने में परिभाषित करना होगा csproj बिल्ड कॉन्फ़िगरेशन के रूप में। आपको अपने लिए एक बिल्ड कॉन्फ़िगरेशन जोड़ना होगा csproj फ़ाइल:

<PropertyGroup Condition=""$(Configuration)|$(Platform)"=="WebListener|AnyCPU"">
<DefineConstants>DEBUG</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
</PropertyGroup>

<PropertyGroup Condition=""$(Configuration)|$(Platform)"=="IISExpress|AnyCPU"">
<DefineConstants>DEBUG</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
</PropertyGroup>

और आपको जानकारी को जोड़ना होगा, जो कॉन्फ़िगरेशन बनाते हैं वे उपलब्ध नहीं हैं:

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Configurations>Debug;Release;WebListener;IISExpress</Configurations>
</PropertyGroup>

इसलिए आप उदाहरण के रूप में अपने कोड का उपयोग कर सकते हैं

#if WEBLISTENER
.UseWebListener(options =>
{
options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.Negotiate | AuthenticationSchemes.NTLM;
options.ListenerSettings.Authentication.AllowAnonymous = false;
})
#endif

#if IISEXPRESS
/* ... */
#endif

BUT: इस समाधान के साथ, आपको अपने कॉन्फ़िगरेशन के बीच स्विच करने के लिए लॉन्च सेटिंग्स और बिल्ड सेटिंग्स दोनों को बदलना होगा:

बिल्ड + लॉन्च कॉन्फ़िगरेशन

अधिक जानकारी के लिए आप इन स्रोतों को देख सकते हैं: