Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Azure Logic Apps (Standart)
Tümleştirme senaryonuzda Azure Logic Apps yerleşik işlemlerin ve bağlayıcıların ötesinde özel görevler veya mantık gerektiğinde, Standart iş akışlarınızda custom işlevleri olarak .NET kodu oluşturun ve çalıştırın. Daha sonra iş akışınız özel ayrıştırma, doğrulama gibi görevleri gerçekleştirebilir ve hatta iş kuralları uygulayabilir. Bu özelliği kullanarak aşağıdaki görevler gibi senaryolar uygulayabilirsiniz:
- İş mantığı uygulamasını özelleştirme.
- Gelen iletiden bilgi ayıklamak için ayrıştırma işlemini özelleştirin.
- Veri doğrulama ve basit dönüştürmeler gerçekleştirme.
- Hesaplamalar yapın.
- API gibi başka bir sisteme gönderilen giden iletileri şekillendirin.
Bu kılavuzda, Visual Studio Code kullanarak doğrudan Standart iş akışlarında kendi .NET kodunuzu yazma ve çalıştırma işlemleri gösterilmektedir. Visual Studio Code kullanarak yerel işlevleri oluşturmayı, hatalarını ayıklamayı ve dağıtmayı öğrenirsiniz; böylece özel kod ve iş akışı düzenlemesini birlikte tutabilir, tek bir oturumda hata ayıklayabilir ve bunları tek bir çözüm olarak dağıtabilirsiniz.
Not
Özel satır içi .NET kodu aşağıdaki senaryolar için uygun değildir:
- 10 dakikayı aşabilecek işlemleri çalıştırma.
- Büyük ileti ve veri dönüştürmeleri deneniyor.
- Karmaşık toplu işleme ve ayırma senaryoları gerçekleştirme.
- Akış uygulayan BizTalk sunucu işlem hattı bileşenlerini kullanma.
Daha fazla bilgi için bkz . Sınırlamalar.
Önkoşullar
** Bir Azure hesabı ve aboneliği. Ücretsiz bir Azure hesabı edinin.
Azure Logic Apps (Standart) uzantısıyla en son Visual Studio Code.
Önkoşullar için bkz. Visual Studio Code ile tek kiracılı Azure Logic Apps Standart iş akışları oluşturma.
Uzantı aşağıdaki özellikleri ve avantajları sağlar:
- En zorlu tümleştirme sorunlarınızı çözmek için esneklik ve denetime sahip işlevler oluşturarak kendi kodunuzu yazın.
- Visual Studio Code'da kodu yerel olarak hata ayıkla. Aynı hata ayıklama oturumunda kodunuzda ve iş akışlarınızda adım adım ilerleyin.
- İş akışlarınızla birlikte kod dağıtın. Başka hizmet planı gerekmez.
- Şirket içinden buluta özel .NET yatırımlarını kaldırıp kaydırabilmeniz için BizTalk Server geçiş senaryolarını destekleyin.
Kod projeniz için kullanılacak yerel klasör.
Sınırlamalar
Özel işlevler özelliğini yalnızca Windows üzerinde çalışan Visual Studio Code kullanabilirsiniz. Bu özellik, Azure üzerinde dağıtılan ve barındırılan Standart mantıksal uygulama iş akışları için .NET Framework ve .NET 8 kullanımını destekler.
Azure portalında özel işlevler yazamazsınız. Ancak, iş akışınızdaki özel işlevlerden gelen çıkışlarla çalışmak için şu adımları izleyin:
İşlevlerinizi Azure'a dağıttıktan sonra Azure portalındaki İş Akışından Kodu Çalıştırma bölümündeki adımları izleyin.
Bu mantıksal uygulamadaki yerel bir işlevi çağır adlı yerleşik eylemi iş akışınıza ekleyin. İstediğiniz dağıtılan özel işlevleri seçin ve kodunuzu çalıştırın.
Diğer iş akışlarında yapabileceğiniz gibi özel işlev çıkışlarına başvurmak için sonraki iş akışı eylemlerini kullanın. Yerleşik eylemin çalıştırma geçmişini, girişlerini ve çıkışlarını görüntüleyebilirsiniz.
Genel sınırlamalar için bkz. Azure Logic Apps için Sınırlar ve yapılandırma başvuru kaynağı.
1: Kod projesi oluşturma
Visual Studio Code için Azure Logic Apps (Standart) uzantısı, iş akışlarınızla kendi kodunuzu yazmak, hata ayıklamak ve dağıtmak için kolaylaştırılmış bir deneyim sağlayan bir kod projesi şablonu içerir. Bu proje şablonu bir çalışma alanı dosyası ve iki örnek proje oluşturur: kodunuzu yazmak için bir proje ve iş akışlarınızı oluşturmak için başka bir proje.
Not
Hem kodunuz hem de iş akışlarınız için aynı proje klasörünü kullanamazsınız.
Kod projesi oluşturmak için şu adımları izleyin:
Visual Studio Code'da Azure hesabınıza giriş yapın .
Oturum açma işlemi normalden uzun sürüyorsa Visual Studio Code size bir cihaz kodu sağlayarak Microsoft kimlik doğrulama web sitesi üzerinden oturum açmanızı ister. Bunun yerine kodu kullanarak oturum açmak için şu adımları izleyin:
Cihaz Kodunu Kullan'ı ve ardından Kopyala ve Aç'ı seçin.
Bağlantıyı Aç'ı seçerek yeni bir tarayıcı penceresi açın ve kimlik doğrulama web sitesine geçin.
Hesabınızda oturum açın sayfasında kimlik doğrulama kodunuzu girin ve İleri'yi seçin.
Etkinlik Çubuğu'nda Azure simgesini seçin.
Azure penceresinde Workspace bölümüne gidin. araç çubuğunun görünmesi için işaretçinizi başlık alanının üzerine getirin.
Azure Logic Apps menüsünden Yeni mantıksal uygulama çalışma alanı oluştur öğesini seçin.
Ekran görüntüsü Azure penceresi, Çalışma Alanı bölümü araç çubuğu ve Yeni mantıksal uygulama çalışma alanı oluşturma seçeneğiyle Visual Studio Code'u gösterir. Klasör Seç penceresinde yerel proje klasörüne gidin, klasörü seçin ve ardından Seç'i seçin.
Yeni mantıksal uygulama çalışma alanı oluştur penceresinde, Çalışma alanı adı istemi için çalışma alanınız için bir ad girin ve Enter tuşuna basın.
Bu örnekte çalışma alanı adı olarak kullanılır
weather-app:
Bu örnekte çalışma alanı adı olarak kullanılır
weather-project.Yeni projeniz için şablon seçin istemi içinÖzel kod projesiyle mantıksal uygulama'yı seçin.
Select a target framework istemi için .NET Framework veya .NET 8 seçin.
Aşağıdaki bilgileri sağlamak için sonraki istemleri izleyin:
Komut istemi Örnek değer Mantıksal Uygulama adı weather-logic-app.NET işlevleri projeniz için Function name WeatherForecast.NET işlevleri projeniz için Namespace Contoso.EnterpriseProjenizin ilk iş akışı için bir şablon seçin:
- Durumlu iş akışı
- Durum bilgisi olmayan iş akışı
- Otonom aracı
- Konuşma aracısı
- Şimdilik atlaDurum bilgisi olan iş akışı İş akışı adı weather-workflowProjenizi nasıl açmak istediğinizi seçin istemi için Geçerli pencerede aç'ı seçin.
Bu adımı tamamladıktan sonra, Visual Studio Code varsayılan olarak bir .NET işlevleri projesi ve mantıksal uygulama projesi içeren çalışma alanınızı oluşturur, örneğin:
Gezgin penceresinde, çalışma alanınızda aşağıdaki klasörleri not edin:
Klasör Açıklama < çalışma alanı-adı> hem .NET işlevleri projenizi hem de mantıksal uygulama iş akışı projenizi içerir. < mantık-uygulama-adı> Mantıksal uygulama projenize ait dosyaları ve diğer nesneleri içerir. Örneğin ,workflow.json dosyası iş akışınızı oluşturabileceğiniz iş akışı tanım dosyasıdır. < işlev-adı> .NET işlevleri projeniz için dosyaları ve diğer yapıtları içerir. Örneğin işlev <adı>.cs dosyası, kodunuzu yazabileceğiniz kod dosyasıdır. Azure için Logic Apps <logic-app-name> istemi için Bağlayıcıları Etkinleştir seçeneğine, Azure'dan bağlayıcıları kullan'ı seçin.
Select subscription istemi için istediğiniz Azure aboneliği seçin.
Yeni kaynaklar için kaynak grubu seçin istemi için istediğiniz kaynak grubunu veya Yeni kaynak grubu oluştur'u seçin.
Yeni kaynaklar için bir konum seçin istemi için dağıtım için Azure bölgesini seçin.
Azure bağlayıcıları için kimlik doğrulama yöntemini seçin için, kimlik doğrulaması gerektiren bağlantılar için kullanılacak kimlik doğrulama türünü seçin.
Doğrulama türü Açıklama İdare edilen kimlik Mantıksal uygulama kaynağınızda sistem tarafından atanan veya kullanıcı tarafından atanan kimliği kullanmak için Yönetilen Hizmet Kimliği'ni seçin.
Varsayılan olarak, Standart mantıksal uygulama kaynaklarda sistem tarafından atanan kimlik zaten etkindir. Ancak, hedef kaynakta rol erişimi ve diğer gereksinimlerle kimliği ayarlamanız gerekir.
Daha fazla bilgi için bkz. Yönetilen kimliğe rol tabanlı erişim atama.Bağlantı anahtarları Bağlantı dizelerini ve erişim anahtarlarını kullanarak hedef kaynağa erişimi ayarlayın.
Bu adımları tamamladıktan sonra, kodunuzu yazabilmeniz için sonraki bölüme geçin.
2: Kodunuzu yazın
Gezgin penceresinde işlev projesi klasörünü genişletin ve <.cs dosyasını açın>.
Bu dosya, daha önce sağladığınız değerleri içeren örnek kodu ve belirli kod öğelerini içerir.
Bu örnekte , WeatherForecast.cs işlev dosyası örnek değerlerle şu kod öğelerini içerir:
Kod öğesi Değer Ad alanı adı Contoso.EnterpriseSınıf adı WeatherForecastİşlev adı WeatherForecastİşlev parametreleri zipcode,temperatureScaleDönüş türü TaskKarmaşık tür WeatherAşağıdaki örnekte örnek kodun tamamı gösterilmektedir:
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace Contoso.Enterprise { using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Azure.Functions.Extensions.Workflows; using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; /// <summary> /// Represents the WeatherForecast flow invoked function. /// </summary> public class WeatherForecast { private readonly ILogger<WeatherForecast> logger; public WeatherForecast(ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger<WeatherForecast>(); } /// <summary> /// Executes the logic app workflow. /// </summary> /// <param name="zipCode">The zip code.</param> /// <param name="temperatureScale">The temperature scale (e.g., Celsius or Fahrenheit).</param> [FunctionName("WeatherForecast")] public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale) { this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale); // Generate random temperature within a range based on the temperature scale Random rnd = new Random(); var currentTemp = temperatureScale == "Celsius" ? rnd.Next(1, 30) : rnd.Next(40, 90); var lowTemp = currentTemp - 10; var highTemp = currentTemp + 10; // Create a Weather object with the temperature information var weather = new Weather() { ZipCode = zipCode, CurrentWeather = $"The current weather is {currentTemp} {temperatureScale}", DayLow = $"The low for the day is {lowTemp} {temperatureScale}", DayHigh = $"The high for the day is {highTemp} {temperatureScale}" }; return Task.FromResult(weather); } /// <summary> /// Represents the weather information for WeatherForecast. /// </summary> public class Weather { /// <summary> /// Gets or sets the zip code. /// </summary> public int ZipCode { get; set; } /// <summary> /// Gets or sets the current weather. /// </summary> public string CurrentWeather { get; set; } /// <summary> /// Gets or sets the low temperature for the day. /// </summary> public string DayLow { get; set; } /// <summary> /// Gets or sets the high temperature for the day. /// </summary> public string DayHigh { get; set; } } } }İşlev tanımı, başlamak için kullanabileceğiniz varsayılan
Runbir yöntem içerir. Bu örnekRunyöntemi, karmaşık .NET türleri de dahil olmak üzere farklı giriş ve çıkışları geçirme gibi özel işlevler özelliğiyle kullanılabilen bazı özellikleri gösterir.< >.cs dosyası, Application Insights kaynağı için olayları günlüğe kaydetme desteği sağlayan
ILoggerarabirimi de içerir. Application Insights'a izleme bilgileri gönderebilir ve bu bilgileri iş akışlarınızdaki izleme bilgileriyle depolayabilirsiniz, örneğin:private readonly ILogger<WeatherForecast> logger; public WeatherForecast(ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger<WeatherForecast>(); } [FunctionName("WeatherForecast")] public Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale) { this.logger.LogInformation("Starting WeatherForecast with Zip Code: " + zipCode + " and Scale: " + temperatureScale); <...> }Örnek işlev kodunu kendinizle değiştirin ve belirli senaryolarınız için varsayılan
Runyöntemi düzenleyin. İsterseniz, bildirimi de dahil olmak üzere[FunctionName("<function-name>")]işlevi kopyalayabilir ve ardından işlevi benzersiz bir adla yeniden adlandırabilirsiniz. Ardından yeniden adlandırılan işlevi gereksinimlerinizi karşılayacak şekilde düzenleyebilirsiniz.
Bu örnek, değişiklik olmadığı varsayılarak özgün örnek kodla devam eder.
3: Kodunuzu derleyin ve derleyin
Kodunuzu yazmayı bitirdikten sonra, hiçbir derleme hatası olmadığından emin olmak için kodunuzu derleyin. .NET işlevleri projeniz, kodunuzu derleyen ve iş akışlarının çalıştırılacak özel işlevleri aradığı mantıksal uygulama projenizdeki lib\custom klasörüne ekleyen derleme görevlerini otomatik olarak içerir. .NET sürümünüze bağlı olarak, bu görevler derlemeleri lib\custom\net472 veya lib\custom\net8 klasörüne koyar.
Aşağıdaki adımları izleyin:
Visual Studio Code'da, Etkinlik Çubuğu'nda Explorer öğesini seçin.
Gezgin penceresinde, işlev projesi klasörünün kısayol menüsünü açın ve İşlevler projesi oluştur'a tıklayın.
Derleme görevi, işlev projesi için çalışır. Derlemeniz başarılı olursa Terminal penceresinde Derleme başarılı iletisi gösterilir.
Mantıksal uygulama projenizde aşağıdaki öğelerin mevcut olduğunu onaylayın:
Çalışma alanınızda şu klasörleri genişletin: <your-logic-app>>lib\custom>net472 veya net8, .NET sürümünüz temelinde. net472 veya net8 adlı alt klasörün, <.dlladlı>bir dosya da dahil olmak üzere kodunuzu çalıştırmak için gereken derleme (DLL) dosyalarını içerdiğini onaylayın.
Çalışma alanınızda şu klasörleri genişletin: <mantıksal uygulamanız>>lib\custom><function-name>. < function-name> adlı alt klasörde, yazdığınız işlev koduyla ilgili metadata içeren function.json dosyası bulunduğunu onaylayın. İş akışı tasarımcısı, kodunuzu çağırırken gerekli girişleri ve çıkışları belirlemek için bu dosyayı kullanır.
Aşağıdaki örnek, mantıksal uygulama projesinde örnek oluşturulan derlemeleri ve diğer dosyaları gösterir:
4: Kodunuzu bir iş akışından çağırma
Kodunuzun derlendiğini ve mantıksal uygulama projenizin kodunuzun çalıştırılması için gerekli dosyaları içerdiğini onayladıktan sonra, iş akışınızı kodunuzu çağıracak şekilde ayarlayın.
Gezgin penceresinde <, logic-app-name ve ardından iş akışı-adı'nı><genişletin.><>
workflow.jsonkısayol menüsünü açın ve Tasarımcıyı aç'ı seçin.
İş akışı tasarımcısı açılır ve aşağıdaki tetikleyici ve eylemlerle varsayılan iş akışını gösterir:
Operation Açıklama Tetikleyici Http isteği alındığında adlı yerleşik İstek tetikleyicisi. Eylem Bu mantıksal uygulamada yerleşik eylem olan 'Yerel bir işlevi çağır'. Eylem Çağıranı yanıtlamak için yalnızca İstek tetikleyicisini kullandığınızda kullandığınız Yanıt adlı yerleşik Yanıt eylemi. Tasarımcıda, bu mantıksal uygulamada yerel bir işlevi çağır adlı eylemi seçin.
Özel işlev çağrısını ayarlayabilmeniz için eylemin bilgi bölmesi açılır, örneğin:
İşlev adı parametre değerinin çalıştırmak istediğiniz işleve ayarlandığını gözden geçirin ve onaylayın. İşlevinizin kullandığı diğer parametre değerlerini gözden geçirin veya değiştirin.
5: Kodunuzda ve iş akışınızda hata ayıklama
Aşağıdaki Azure Storage hizmetlerin her biri için Azurite depolama öykünücüsünün başlatılmasını sağlar:
- Azure Blob Hizmeti
- Azure Kuyruk Hizmeti
- Azure Tablo Hizmeti
Visual Studio Code View menüsünden Command Palette öğesini seçin.
Görüntülenen istemde listeden Azurite: Blob Hizmetini Başlat'ı seçin.
Görüntülenen çalışma dizini listesinden mantıksal uygulamanızı seçin.
Azurite için şu adımları yineleyin: Kuyruk Hizmetini Başlat ve Azurite: Tablo Hizmetini Başlat.
Başarılı olursanız, ekranın alt kısmındaki Visual Studio Code görev çubuğunda çalışan üç depolama hizmeti gösterilir.
Aşağıdaki adımları izleyerek hata ayıklayıcıyı hem mantıksal uygulama projenize hem de .NET işlevleri projenize ekleyin:
Visual Studio Code'da Etkinlik Çubuğu'nda Run ve Hata Ayıkla (klavye: Ctrl+Shift+D) öğesini seçin.
Çalıştır ve Hata Ayıkla listesinden Yerel işlevli Çalıştır/Hata Ayıkla mantıksal uygulamasını (<mantıksal uygulamanız>) ve ardından Yürüt (yeşil ok) öğesini seçin.
Aşağıdaki olaylar gerçekleşir:
- Terminal penceresi açılır ve başlatılan hata ayıklama işlemini gösterir.
- Hata Ayıklama Konsolu penceresi açılır ve hata ayıklama durumunu gösterir.
- Visual Studio Code en altında görev çubuğu turuncuya döner ve .NET hata ayıklayıcısının yüklendiğini gösterir.
Kesme noktalarını ayarlamak için işlev tanımınızda (<işlev-adı>.cs) veya iş akışı tanımınızda (workflow.json), kesme noktasını istediğiniz satır numarasını bulun ve bitişik sütunu seçin, örneğin:
İstek tetikleyicisini iş akışınızda el ile çalıştırmak için iş akışının Genel Bakış sayfasını açın:
Mantıksal uygulama projenizde ,workflow.json dosyasının kısayol menüsünü açın ve genel bakış'ı seçin.
İş akışının Genel Bakış sayfasında, iş akışını el ile başlatmak istediğinizde tetikleyiciyi çalıştır düğmesi kullanılabilir. İş Akışı Özellikleri'nin altında Geri Arama URL'si değeri, iş akışınızdaki İstek tetikleyicisi tarafından oluşturulan çağrılabilir uç noktanın URL'sidir. Diğer mantıksal uygulama iş akışları da dahil olmak üzere diğer uygulamalardan iş akışınızı tetikleme amacıyla bu URL'ye istek gönderebilirsiniz.
Genel Bakış sayfası araç çubuğunda Tetikleyiciyi çalıştır'ı seçin.
İş akışınız çalışmaya başladıktan sonra hata ayıklayıcı ilk kesme noktanızı etkinleştirir.
Çalıştır menüsünde veya hata ayıklayıcı araç çubuğunda bir hata ayıklama eylemi seçin.
İş akışı çalıştırması tamamlandıktan sonra, Genel Bakış sayfası tamamlanmış çalıştırmayı ve bu çalıştırmayla ilgili temel ayrıntıları gösterir.
İş akışı çalıştırması hakkında daha fazla bilgi gözden geçirmek için tamamlanan çalıştırmayı seçin. Alternatif olarak, Süre sütununun yanındaki listeden Çalıştırmayı göster'i seçin.
6: Kodunuzu dağıtma
Özel işlevlerinizi mantıksal uygulama projenizi dağıttığınız gibi dağıtın. İster Visual Studio Code dağıtın ister CI/CD DevOps işlemi kullanın, dağıtmadan önce kodunuzu derlediğinizden emin olun. Ayrıca, dağıtmadan önce tüm bağımlı derlemelerin aşağıdaki mantıksal uygulama proje klasöründe bulunduğundan emin olun:
.NET 4.7.2: lib/custom/net472 klasörü
.NET 8: lib/custom/net8 klasörü
Daha fazla bilgi için bkz. Standard iş akışlarını Visual Studio Code'den Azure'a dağıt.
Bağımlılık enjeksiyonu
.NET 8'ı seçtiğinizde, Standart iş akışlarındaki özel .NET kodu dependency injection (DI) destekler. Bu özellik, hizmetleri bir kez kaydetmenize olanak tanır ve bu sayede her işlev içinde bağımlılıklar oluşturmak yerine çalışma zamanında özel kod işlevlerinizin kullanımına otomatik olarak sunulur.
Not
Yalnızca .NET 8 özel kod projeleri, Visual Studio Code'da bağımlılık enjeksiyonunu destekler.
Bağımlılık ekleme olmadan özel kod genellikle çalışır:
- Doğrudan işlevde hizmet örnekleri oluşturun.
- Birden çok işlev veya iş akışı arasında yinelenen mantık.
- İş mantığını kurulum ve yapılandırma koduyla karıştırın.
İş akışları büyüdükçe özel kodu test etmek, yeniden kullanmak ve bakımını yapmak zorlaşır. Bağımlılık enjeksiyonu ile şunları yapabilirsiniz:
- İş mantığını iş akışı yürütmesinden ayırın.
- Paylaşılan hizmetleri birden çok özel kod işlevinde yeniden kullanma.
- Özel kodu standart .NET geliştirme desenleriyle hizalayın.
Özel kod, özellikle birden çok iş akışı aynı mantığa bağlı olduğunda üretim iş akışlarında daha yönetilebilir hale gelir.
Bağımlılık ekleme ne zaman kullanılır?
Basit veya tek seferlik özel kod işlevleriniz varsa, bağımlılık eklemeye ihtiyacınız yoktur. Ancak özel kodunuz aşağıdaki gereksinimlere sahipse bağımlılık ekleme özelliğini kullanmanız gerekebilir:
- Birden çok iş akışı aynı özel kod işlevlerini kullanır veya paylaşır.
- Özel kod işlevleriniz zaman içinde değişen iş veya yönlendirme mantığı içerir.
- Daha iyi test edilebilirlik veya uzun süreli bakım gerektirir.
Bağımlılık ekleme özel .NET işlevlerini nasıl etkiler?
Bağımlılık ekleme, özel .NET işlevlerini çağırma şeklinizi veya iş akışı davranışınızı değiştirmez. Bu özellik yalnızca temel alınan özel kod yapısını değiştirir ancak aynı sonucu verir. Aşağıdaki adımlar bu işlemi açıklar:
- Azure Logic Apps özel kod projenizi yükler.
- Azure Logic Apps gerekli hizmetleri oluşturur, kaydeder ve işleve ekler.
- İşlev, eklenen bağımlılıkları kullanarak çalışır.
Bağımlılık eklemeyi etkinleştirme
Özel .NET kodunuzla bağımlılık ekleme özelliğini kullanmak için aşağıdaki gereksinimleri tamamlayın:
Özel kod projenizi oluştururken .NET 8 öğesini seçin.
Yalnızca .NET 8 özel kod projesi bağımlılık eklemeyi destekler.
Projenizde bağımlılık listesini tanımlamak için bir
StartupConfigurationsınıf ekleyin. Bu arabirimiIConfigureStartupuygulayın veIServiceCollectionkullanarak bağımlılıklarınızı kaydedin, örneğin:using Microsoft.Azure.Functions.Extensions.Workflows; using Microsoft.Extensions.DependencyInjection; public class StartupConfiguration : IConfigureStartup { /// <summary> /// Configures services for the custom code function to use. /// </summary> /// <param name="services">The service collection to configure.</param> public void Configure(IServiceCollection services) { // Register the routing service with dependency injection services.AddSingleton<IRoutingService, OrderRoutingService>(); services.AddSingleton<IDiscountService, DiscountService>(); } }IConfigureStartuparabirimiMicrosoft.Extensions.DependencyInjectioniçinde tanımlanır. Daha fazla bilgi için bkz. StartupConfiguration.csÖzel kod işlev sınıfı oluşturucunuzda, kayıtlı hizmetleri işlev içinde oluşturmak yerine oluşturucu parametreleri olarak tanımlayarak başlatın, örneğin:
public class MySampleFunction { private readonly ILogger<MySampleFunction> logger; private readonly IRoutingService routingService; private readonly IDiscountService discountService; public MySampleFunction(ILoggerFactory loggerFactory, IRoutingService routingService, IDiscountService discountService) { this.logger = loggerFactory.CreateLogger<MySampleFunction>(); this.routingService = routingService; this.discountService = discountService; } // Add your function logic here }
Özel kod projenizi oluşturmanın ve dağıtmanın ötesinde, bağımlılık eklemeyi etkinleştirmek için başka bir adım uygulamanız, iş akışınızı düzenlemeniz veya Azure Logic Apps'da başka kurulum değişiklikleri yapmanız gerekmez.
Daha fazla bilgi için, Özel Kod Bağımlılık Enjeksiyonu örneğine bakın.
Kendi NuGet paketlerinizi getirme
.NET 8 kullanan NuGet tabanlı özel kod projeleri için, dil çalışanı konağı tarafından kullanılan bağımlılıklarla çakışmaları çözmek zorunda kalmadan kendi NuGet paketlerinizi dahil edebilir ve yönetebilirsiniz. Derleme bağımlılıklarını doğrudan projenizdeki ayrı derleme konumuna eklemeniz gerekir. Aşağıdaki özel durumlarla, projenizin ihtiyaç duyduğu .NET 8 uyumlu bağımlı derleme sürümlerini getirebilirsiniz:
- Microsoft.Extensions.Logging.Abstractions
- Microsoft.Extensions.DependencyInjection.Abstractions
- Microsoft.Azure.Functions.Extensions.Workflows.Abstractions
Sorunları giderme
Eylem bilgileri bölmesi hatası
İş akışı tasarımcısında, Bu mantıksal uygulamada Yerel işlev çağır adlı yerleşik eylemi seçtiğinizde, eylemin bilgi bölmesi aşağıdaki iletiyi gösterir:
Failed to retrieve dynamic inputs. Error details:
Bu senaryoda LogicApp\lib\custom klasörünün boş olup olmadığını görmek için mantıksal uygulama projenizi denetleyin. Boşsa, Terminal menüsünden Görev Çalıştır>Fonksiyonları Derle'yi seçin.
Belirtilen ada sahip hiçbir işlem şu anda çalışmıyor
İş akışınızı çalıştırdığınızda bu hata iletisini alırsanız hata ayıklayıcı işlemini büyük olasılıkla mantıksal uygulamanıza değil .NET İşlevleri'ne eklemiş olursunuz.
Bu sorunu çözmek için Çalıştır ve Hata Ayıkla listesinden Mantıksal uygulamaya bağlan (LogicApp)'i ve ardından Çalıştır (yeşil üçgen)'yi seçin.
Paket doğru içeri aktarılmadı
Çıkış penceresinde aşağıdaki iletiye benzer bir hata varsa, en az .NET 6.0 yüklü olduğundan emin olun. Bu sürüm yüklüyse kaldırmayı ve sonra yeniden yüklemeyi deneyin.
C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.targets(83,5): warning : The ExtensionsMetadataGenerator package was not imported correctly. Are you missing 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.targets' or 'C:\Users\yourUserName\.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\4.0.1\build\Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator.props'? [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] WeatherForecast -> C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\\bin\Debug\net472\WeatherForecast.dll C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : It was not possible to find any compatible framework version [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : The specified framework 'Microsoft.NETCore.App', version '6.0.0' was not found. [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj] C:\Users\yourUserName\.nuget\packages\microsoft.net.sdk.functions\4.2.0\build\Microsoft.NET.Sdk.Functions.Build.targets(32,5): error : - Check application dependencies and target a framework version installed at: [C:\Desktop\...\custom-code-project\MyLogicAppWorkspace\Function\WeatherForecast.csproj]
Derleme hataları
İşleviniz değişken içermiyorsa ve kodunuzu oluşturuyorsanız Çıkış penceresinde aşağıdaki hata iletileri gösterebilirsiniz:
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
Build FAILED.
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1031: Type expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
C:\Users\yourUserName\...\custom-code-project\Function\func.cs (24,64): error CS1001: Identifier expected [C:\Users\yourUserName\...\custom-code-project\Function\func.csproj]
0 Warning(s)
2 Error(s)
Bu sorunu çözmek için kodunuzun Run yöntemine aşağıdaki parametreyi ekleyin:
string parameter1 = null
Aşağıdaki örnekte yöntem imzasının Run nasıl göründüğü gösterilmektedir:
public static Task<Weather> Run([WorkflowActionTrigger] int zipCode, string temperatureScale, string parameter1 = null)