У меня есть набор Предупреждений в проекте Visual Studio 2005 года, большинство из них предупреждает меня, что имя ресурса не является допустимым идентификатором.
пример:
The resource name 'MB_ArchiveRestore.cs_11' is not a valid identifier.
Справка MSDN онлайн указывает, что имя ресурса должно быть со строгим контролем типов, и не содержать пробелы. Что делает со строгим контролем типов точно средний?
Строго типизированный означает, что переменная, поле или свойство имеют определенный тип, а не просто Object
.
public class User
{
public String FirstName { get; set; } // Strongly typed
public Object LastName { get; set; } // Weakly typed
}
Если вы используете строго типизированные ресурсы, код создается со строго типизированными свойствами для всех ваших ресурсов. В этом случае имя ресурса используется в качестве имени свойства, следовательно, это должно быть допустимое имя свойства C #. Ваш пример MB_ArchiveRestore.cs_11
содержит точку и, следовательно, не является допустимым именем свойства. Генератор кода заменит точку на подчеркивание, чтобы имя стало действительным, и выдает описанное предупреждение, чтобы проинформировать вас об этом.
Я не уверен, что это поможет вам исправить проблему, но в интересах ответа на ваш фактический вопрос. Сильно типизированная означает, что переменная имеет данный тип, в отличие от определенного типа, определенного во время выполнения. Проверьте Википедию
Например:
Int32 counter;
Означает, что переменная счетчика сильно типизирована, так как мы знаем, что это Int32. Другие языки или использование динамических ключевых слов означают:
dynamic counter = ResultOfFunc()
означает, что счетчик не имеет строгой типизации, так как определяется во время выполнения результатом ResultOfFunc ().
-121--3246016- Проблема возникает из-за .
не является допустимым символом в идентификаторах.
Что означает строго типизированный тип?
Хотя это не так актуально для данного конкретного вопроса, «сильно типизированный» означает, что объект имеет определенное понятие типа. Например, нельзя сделать int i = «5»;
в C #, поскольку «5» - это последовательность, а i
- целое число - их типы несовместимы друг с другом.
Это контрастирует с «слабо типизированными» языками, где понятие «тип» не столь сильно. Слабо набранный язык может решить, что для чего-то вроде i = 5; j = «6»; print (i + j);
, правильный ответ - 11.
Основываясь на ссылке, которую вы разместили в вопросе, я думаю, что вы, вероятно, спрашиваете о сильно типизированной генерации ресурсов
- это означает, что Visual Studio создаст файл ресурсов, который позволит получить доступ к ресурсам через типизированные свойства, например
string fileName = Resources.FileName;
bool someSetting = Resources.AllowDelete;
byte[] binaryResource = Resources.SomeFile;
, в отличие от нетипизированных ресурсов, для которых необходимо самостоятельно выдать возвращаемое значение, поскольку он возвращает тип System.Object вместо определенного типа.
string fileName = (string)Resources["FileName"];
bool someSetting = (bool)Resources["AllowDelete"];
byte[] binaryResource = (byte[])Resources["SomeFile"]
Я предполагаю, что у вас есть ресурс с именем "MB ArchiveRestore.cs 11".
Начиная с VS 2005 компилятор (или, точнее, дополнительный инструмент) автоматически генерирует классы доступа для встроенных ресурсов. Их можно использовать для получения ресурсов.
Свойством класса для вашего примера, вероятно, является Properties.Resources.MB_ArchiveRestore.cs_11
.
Эти строго типизированные классы ресурсов также обеспечивают удобный способ локализации.
Это зависит от временных рамок проекта на стороне DirectX.
Если проект должен быть готов через несколько месяцев, то следуйте совету Нильса. ЕСЛИ время больше года, я бы решил ограничиться DirectX9, поскольку машины XP со временем становятся все меньше и меньше. DirectX11 было бы хорошей идеей, особенно с ретрокомпатитированностью до уровня 9.0.
-121--3632097-Возможно, вы захотите проверить эту ссылку:
http://www.gnu.org/s/libc/manual/html_node/Infinity-and-NaN.html
Я сделал это, и это хорошо работает на gcc 4.4.1
#include "math.h"
int main(int argc, char**argv)
{
int x = INFINITY;
return 0;
}
-121--2568566- Проблема возникает из-за .
не является допустимым символом в идентификаторах.
Что означает строго типизированный тип?
Хотя это не так актуально для данного конкретного вопроса, «сильно типизированный» означает, что объект имеет определенное понятие типа. Например, нельзя сделать int i = «5»;
в C #, поскольку «5» - это последовательность, а i
- целое число - их типы несовместимы друг с другом.
Это контрастирует с «слабо типизированными» языками, где понятие «тип» не столь сильно. Слабо набранный язык может решить, что для чего-то вроде i = 5; j = «6»; print (i + j);
, правильный ответ - 11.
Я не уверен, что это поможет вам решить вашу проблему, но в интересах ответа на ваш настоящий вопрос. Строго типизированный означает, что переменная относится к данному типу, а не к некоторому типу, определенному во время выполнения. См. Википедию
Например:
Int32 counter;
Означает, что переменная счетчика строго типизирована, поскольку мы знаем, что это Int32. Другие языки или использование динамических ключевых слов означают:
dynamic counter = ResultOfFunc()
означает, что счетчик не является строго типизированным, поскольку он определяется во время выполнения результатом ResultOfFunc ().
Я должен предположить, что он жалуется на _11 в конце, что сделало бы его недопустимым файлом C # и, следовательно, недопустимым ресурсом.
"Strongly Typed" в данном случае означает, что Visual Studio пытается сгенерировать объектную модель для использования на основе имен ваших ресурсов.
Например, допустим, у вас есть файл ресурсов с URL, которые указывают на ваши любимые сайты. ваши ресурсы выглядят примерно так:
когда генератор ресурсов используется для сильного типа, вы получите объектную модель, которую можно вызвать следующим образом:
string googleUrl = Resources.Google;
string msUrl = Resources.Microsoft;
когда у вас есть точка в имени ресурса, генератор кода не может использовать ее, потому что это создаст недопустимые имена в объекте Resources. для примера:
это будет некорректно, потому что попытается создать ресурс с именем Resources.Asp.NET