Автоматически реализованные свойства VB в IIS - PullRequest
1 голос
/ 04 августа 2020

У меня есть проект на VB. NET, ориентированный на версию 4.7.2. NET Framework. Это проект ASP WebForms (да, бедняжка), который развернут в IIS.

Сейчас я занимаюсь очисткой места. И я намеревался использовать автоматически реализованные свойства в классах моделей, чтобы уменьшить количество и без того слишком большого кода VB.

Он отлично работает при разработке. Но я не могу, хоть убей, понять, почему он не работает в производственной среде.

Проблема сводится к следующему классу a:

Public Class ValorAtributo
    Public Sub New(codigo As String, descricao As String)
        Me.Codigo = codigo
        Me.Descricao = descricao
    End Sub

    Public ReadOnly Property Codigo As String
    Public ReadOnly Property Descricao As String
End Class

В IIS производственный сервер выходит из строя в строке Me.Descricao = descricao со следующим сообщением:

BC30456: «Descricao» не является членом «PesquisaAtributo.ValorAtributo».

Изучение развертывания IIS

Меня очень смущают все разновидности. NET и то, где именно они играют роль. Насколько я понимаю, IIS использует. NET CLR, а не. NET Framework. Но это, по крайней мере, половина сказанного, наряду с предыдущим сообщением, можно увидеть, что производственный IIS использует другую версию.

Microsoft. NET Framework Versão: 4.0.30319; Versão do ASP. NET: 4.7.3535.0

Это сбивает с толку, поскольку в файле веб-конфигурации упоминается только. NET 4.7.2.

 <compilation debug="true" strict="false" explicit="true" targetFramework="4.7.2">
...
<httpRuntime targetFramework="4.7.2"  maxRequestLength="15360"/>

IIS Application Pools To add to the confusion, the app pools on IIS only shows .NET up to 4.0 (CLR this time, no mention of .NET Framework I could find).

Atempting a solution

So I need (want) to use auto implemented properties. There must be a fix for this.

My informed guess is that this is caused by an outdated .NET Framework. However I'm not getting what exactly I should do. I've read conflicting versions of how exactly this works, IIS uses CLR vs uses .NET. In short, its a mess.

Can anyone of you highly efficient Microsoft devs enlight me in what am I missing here?

updates

enter image description here

looking further

There is a longer trace in the web version of the exception I missed when initially writing the post.

It is very long, SO was playing tricks, here is a pastebin for it. https://pastebin.com/1NhY6SMa

предыдущее, но похожее? проблема

VB автоматически реализовано Свойство не компилируется

неожиданно

Код ранее компилировался и работал нормально. Я мог бы попробовать и использовать git, чтобы попытаться выяснить, что произошло, но я могу сказать наверняка, что этот файл не менялся с тех пор.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Это происходит потому, что ваш код недоступен в коде вывода / библиотеке внутри вашего веб-приложения / asp. net. Чтобы решить: щелкните правой кнопкой мыши свой класс в проводнике проектов Visual Studio (в вашем случае это «ValorAtributo»), затем «Свойства», затем измените «Действие сборки» в «Компилировать». В этом режиме ваш класс включен в выходной код. введите описание изображения здесь Моя IDE на итальянском, но вы можете понять концепцию.

0 голосов
/ 05 августа 2020

Итак. Может быть, это не ответ на конкретный вопрос. Но поскольку никто не смог определить проблему, и нам действительно нужно, чтобы это работало, вот наше решение.

Не используйте автоматические свойства

Недешево , но просто. Microsoft стоит очень дорого, избегайте этого.

...