I have a builddefinition in VS 2010 containing both the AgentScope and FindMatchingFiles activities. A also have defined a IEnumerable variable to hold the result from the FindMatchingFiles activity, and have set the Result to this variable.
When running the build it fails with:
Type 'System.Linq.OrderedEnumerable`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' not visible. If the type is local, please set the LocalAssembly field in XamlReaderSettings.
This error occurs when the workflow reaches the AgentScope activity.
Here is the oddity:
When removing the variable from the FindMatchinFiles.Result (the variable still exist in the workflow) the error does not occur
When removing the AgentScope, the error does not occur.
Only in the described combination this error occurs.
I have reproduced this error by having a workflow with no more activities than the above described.
I need both the FindMatchingFile and the AgentScope, does anyone have a solution for this?
Check the scope of your FindMatchingFiles Result variable.
Related
Right now autodoc seems to throw warnings for any rtype value that is not just an object type (a class instance, int, list, dictionary, etc). So a return value such as "list of tuples" will throw a warning. Is there any way to ignore these warnings (either individually or on the whole)? I don't want to ignore the whole file, just those specific warnings.
An example of this warning might be something like:
/path/to/code.py:docstring of path.to.code.method:: WARNING: py:class reference target not found: list of tuples
And in some cases, I'm seeing errors for objects that I know are legit classes imported in the code like:
/path/to/code.py:docstring of path.to.code.method:: WARNING: py:class reference target not found: Response
In that example, "Response" is part of rest_framework.response, so it's a pretty commonly used class object.
These warnings happen anytime I do a fresh make docs. It's not clear to be that it can be reproduced in another environment.
The solution here was that the classes in question were not in a toctree, so were not part of the docs. Basically, autodocs wants to be able to link to classes mentioned in type variables. If it can't do that, it will throw an error saying "I have no idea what "Response" is (or whatever the class happens to be that you return). Not an error, because it assumed you're right, but a warning that it can't find it. So the solution here was to create an index.rst that included the class, then a Response.rst (for example) including the relative path to the class. Below is an example of this process. It assumes that Response is in a rest.py.
error: /path/to/code.py:docstring of the.code.rest.GetAccount.get:: WARNING: py:class reference target not found: Response
In my case, this needed the following:
add a line item for response to modules/code/rest.rst
add response.rst in the same directory
include the line `.. automodule:: code.rest.Response
Then delete and rebuild docs and it should be good to go.
Debugging with PyCharm (happens on multiple versions) I'm unable to correctly view some lists and dictionaries (other are presented correctly).
In the view window the object's name is presented with the message:
{list} Unable to get repr for <type 'list>
or
{dict} Unable to get repr for <type 'dict'>
An update:
In one of my attempts, I received the following message from the debugger (presented instead of the value of one of the list variable):
Unable to display children:Error resolving variables Traceback (most
recent call last): File "/Applications/PyCharm
CE.app/Contents/helpers/pydev/_pydevd_bundle/pydevd_comm.py", line
1004, in do_it
_typeName, valDict = pydevd_vars.resolve_compound_variable(self.thread_id, self.frame_id,
self.scope, self.attributes) TypeError: 'NoneType' object is not
iterable
I'll appreciate any idea as for what may cause this behavior?
Thanks!
It turned out the problem is due to usage of rpyc.py: The process I was debugging was called through rpyc and while I was debugging it, the calling process received a timeout on the rpyc connection.
I think that this caused variables, passed through rpc to lose integrity so the debugger couldn't present them correctly.
The solution was to downgrade rpyc.py to version 3.3.0 (I was on 3.4.2).
My colleague, Nurit Izraelov, correctly suggested the rpyc.py version may be the blame.
Thanks all!
It happened to me sometimes and what caused the behaviour was that some MyClass triggered an exception on its str method.
In such a case, PyCharm debugger only showed
some_object = {MyClass} Unable to get repr for <class 'my_app.models.MyClass'>
So what I did to confirm the origin was to watch repr(some_object) in the Watches section of the debugger. And there it gave me an explicit error message:
{TypeError}%d format: a number is required, not NoneType
Which helped me trace back to the origin.
I appreciate this is not a generic answer, but just a complement to Fabio's.
Probably some custom class of yours has a bad __repr__ or __str__ in it and the debugger is unable to print it.
You can probably use a shell at that point to know which elements are actually inside such a dict or list (and see which object has the faulty __repr__ or __str__).
Extending the scope of the problem rather than adding an answer - all the other suggestions are what I do normally to get this working.
Could it be a race condition?
For me it appears to be something weird. In the Variables pane I can see correct representation for theObject, repr(theObject) and even [theObject] but if I set a variable in my code thus a = theObject or b = [theObject] then I get the "Unable to get repr for <class 'list'>" message.
theObject in this case is an instance of a subclassed D lang struct wrapped with autowrap.
This is idp.war deployment on tomcat 7(.69)
Failed to read schema document 'class path:/schema/shibboleth-2.0-services.xsd'
in the trace it suggests some things:
1) could not find the document.
2) the document could not be read.
3) the root element of the document is not <xsd:schema>
I can go into the deployment: idp/WEB-INF/lib/shibboleth-common-1.2.1.jar/schema/ and see all the shibboleth-2.0- .xsd files that the Service.xml file is declaring as schemaLocations
this folder was created by tomcat deployment for tomcat so I don't know why it can't be read, I'm guessing permissions issues wouldn't apply here.
and the root element of the .xsd document is
<schema ... >
so that qualifies as
<xsd:schema>
correct or no?
Two points:
(1) Whether a start-tag with the element-type name schema is effectively the same as one with the element-type name xsd:schema depends on the namespace bindings, which are omitted here. (The start-tag <xsd:schema> cannot occur as the first tag in a namespace-well-formed XML document, so I'm assuming you're paraphrasing, not quoting.)
If the unprefixed schema start-tag makes "http://www.w3.org/2001/XMLSchema" the default namespace, then that is not likely to be your problem. (Hint for the next time you ask a question, though: omitting salient information like namespace bindings makes your question less clear and less likely to get useful responses.)
(2) The error message you quote puts a blank between the strings 'class' and 'path' -- if your reference to the schema document actually does begin "class path:", then that is your problem: Shibboleth's documentation says:
Shibboleth defines a special URL scheme, classpath, which ensures that the schema files are resolved from the classpath.
As a matter of URI syntax, blanks are not allowed in the middle of a scheme name. You will need to start any URI you want to identify in this way with "classpath:/", not "class path:/".
I am trying to use powershell within the Package Manager Console to script the removal of a project from a solution and I am having a surprisingly hard time.
I can easily add a project by
PM> $dte.Solution.AddFromFile("C:\Dev\Project1.csproj")
Now I want to be remove a project and can't get anything to work.
I have tried a number of things including:
PM> $project1 = Get-Project "Project1Name"
PM> $dte.Solution.Remove($project1)>
Cannot convert argument "0", with value: "System.__ComObject", for "Remove" to
type "EnvDTE.Project": "Cannot convert the "System.__ComObject" value of type
"System.__ComObject#{866311e6-c887-4143-9833-645f5b93f6f1}" to type
"EnvDTE.Project"."
PM> $project = Get-Interface $project1 ([EnvDTE.Project])
PM> $dte.Solution.Remove($project)
Cannot convert argument "0", with value: "System.__ComObject", for "Remove" to
type "EnvDTE.Project": "Cannot convert the "System.__ComObject" value of type
"NuGetConsole.Host.PowerShell.Implementation.PSTypeWrapper" to type
"EnvDTE.Project"."
PM> $project = [EnvDTE.Project] ($project1)
Cannot convert the "System.__ComObject" value of type
"System.__ComObject#{866311e6-c887-4143-9833-645f5b93f6f1}" to type
"EnvDTE.Project".
PM> $solution2 = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
PM> $solution2.Remove($project1)
Exception calling "Remove" with "1" argument(s): "Exception calling
"InvokeMethod" with "3" argument(s): "Object must implement IConvertible.""
PM> $dte2 = Get-Interface $dte ([EnvDTE80.DTE2])
PM> $dte2.Solution.Remove($project)
Method invocation failed because [System.Object[]] doesn't contain a method
named 'Remove'.
I have tried other combinations, but I am clearly spinning my wheels. I appreciate any suggestions.
Right, I know I'm late to the party but I've just been tackling this same issue for an internal NuGet package we've been writing, and I think I've found how to do it.
Indeed Microsoft have (helpfully) left the Delete method unimplemented, and as we have both found, attempting to call the Remove method on the Solution2 interface throws an exciting myriad of errors depending on context!
However what I have found is that directly invoking the Remove method defined in SolutionClass does actually work (despite its being documented by Microsoft as internal use only. But hey, when every other option is exhausted...). The only catch is that the runtime binder also sometimes seems to fail to resolve the method overload, producing the error:
No overload for method 'Remove' takes 1 arguments
All of which means that it's time to get our reflection crayons out! The code looks like this:
$removeMethod = [EnvDTE.SolutionClass].GetMethod("Remove");
$solution = $dte.Solution;
$toremove = ($solution.Projects | where ProjectName -eq "<whatever>");
$removeMethod.Invoke($solution, #($toremove));
After a day of various iterations (many closely resembling those in the question) and varying degrees of success (depending on whether I was executing inside the package manager, from inside the install script or within a debugger), the above is what I have found to be most reliable.
One thing to note is that because the reflected method is defined in EnvDTE.SolutionClass, passing it a EnvDTE._Solution or EnvDTE80.Solution2 throws a Type mismatch error, so unfortunately you cannot obtain your $solution object by the Get-Interface cmdlet (which is usually my preferred method). Doing the cast to [EnvDTE.SolutionClass] wherever possible is obviously preferable, but again I've found varying degrees of success in doing so. Hence the slightly sloppy $solution = $dte.Solution above.
Hope this is useful to someone else!
Looks like it is "Delete" instead of "Remove". See this MSDN article
Project prj = dte.Solution.Projects.Item(1);
prj.Delete();
For example, in my console, I have output such as :
2012-11-29 21:25:40.696 Program[31053:707] -[Staff Shifts]: unrecognized selector sent to instance 0x107d6fdd0
2012-11-29 21:25:40.697 Program[31053:707] Exception detected while handling key input.
I was wondering if there's an easy way to find out where this is from?
The debug console can only tell you so much. According to the error, you are trying to access a selector (possibly) within the class Staff that isn't recognized by the instance of that class.
You could, however, use this bit of information to set a breakpoint within that class and step over methods until the exception reoccurs. Then you could set a breakpoint at that method and step into it until you find the problem.
You could also use gdb po at runtime to check for nil/unexpected objects.
The [Staff Shifts] might indicate that you have a class named [Staff Shifts] in your code that is causing the error. An unrecognized selector means that you have the following:
selector: #selector(FunctionName:)
But the function FunctionName: doesn't exist...