c# - .Net कोर 1.1 में सकर्मक संदर्भ




asp.net-core transitive-dependency (2)

.NET Core 1.1 और विजुअल स्टूडियो 2017 RC में एक नमूना वेब ऐप विकसित करते समय, मुझे निम्नलिखित का एहसास हुआ:

जैसा कि आप देख सकते हैं:

  • ClassLibrary3 में ClassLibrary2 का संदर्भ है,
  • और ClassLibrary2 में ClassLibrary1 का संदर्भ है

मैंने ClassLibrary3 प्रोजेक्ट के Class3 में एक सरल विधि लिखी, और Intellisense ने मुझे Class1 के प्रोजेक्ट का स्पष्ट संदर्भ न देते हुए, Class1 को सिर्फ क्लास का नाम लिखने का उपयोग करने की अनुमति दी।

मैं यहाँ कुछ बिंदु याद आ रही है? मैं नहीं चाहता कि कोई व्यक्ति बस आए और ClassLibrary2 की अनदेखी करे।

धन्यवाद।


ट्रांज़िटिव प्रोजेक्ट-टू-प्रोजेक्ट संदर्भ विज़ुअल स्टूडियो 2017 और Microsoft.NET.Sdk की एक नई विशेषता है। यह जानबूझकर किया गया व्यवहार है।

https://github.com/dotnet/sdk/issues/200 देखें।


यदि आप सकर्मक संदर्भ व्यवहार को अक्षम करने में रुचि रखते हैं, तो मुझे अंततः एक रास्ता मिल गया है।

यदि आप प्रोजेक्ट A को B और B को संदर्भ C के संदर्भ में चाहते हैं, लेकिन A को C को संदर्भित नहीं करना चाहते हैं, तो आप B के ProjectReference में PrivateAssets="All" को जोड़ सकते हैं, जैसे:

B.csproj में

<ItemGroup>
  <ProjectReference Include="..\C\C.csproj" PrivateAssets="All" />
</ItemGroup>

यह सेटिंग C के संदर्भ को निजी बनाती है, इसलिए यह केवल B के भीतर ही मौजूद है। अब संदर्भ B को संदर्भित नहीं करता है।

स्रोत: https://github.com/dotnet/project-system/issues/2313





transitive-dependency